2017-02-14 3 views
0

Следующий код должен просто предупредить меня со значением, которое я хочу получить из файла JSON. Проблема заключается в том, что не дает мне ничего обратно :(Ниже ссылка на файл JSON:.Чтение данных JSON, возвращаемых из REST API, с использованием Javascript

https://rest.soilgrids.org/query?lon=5.39&lat=51.57 

В случае, если вы не знаете, то Soil Grids API является API используется для предоставления вам представление почвы на . определенная широта и долгота суши

Я должен признать, что я не знаю, что это неправильно Ниже мой код:.

var soil = new XMLHttpRequest(); 
 

 
function testFunction(){ 
 
    soil.open("REST", "https://rest.soilgrids.org/query?lon=5.39&lat=51.57", false); 
 
    soil.send(null); 
 
    var r = JSON.parse(soil.response); 
 
    var majorreal = r.properties.TAXNWRBMajor; 
 
    alert(majorreal); 
 
    }
<button onclick="testFunction()">Submit</button>

Всякий раз, когда программа запускается, я получаю сообщение об ошибке посыла с XMLHttpRequest ...

"Uncaught NetworkError: Failed to execute 'send' on 
'XMLHttpRequest': Failed to load 'https://rest.soilgrids.org/query 
lon=5.39&lat=51.57'.", 

Любая помощь будет оценена;).

+0

Почему вы проходите * ОТДЫХ *? –

ответ

3

Проблема в том, что нет метода REST (см. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/open).

Использование GET работ.

var soil = new XMLHttpRequest(); 
 

 
function testFunction(){ 
 
    soil.open("GET", "https://rest.soilgrids.org/query?lon=5.39&lat=51.57", false); 
 
    soil.send(null); 
 
    var r = JSON.parse(soil.response); 
 
    var majorreal = r.properties.TAXNWRBMajor; 
 
    alert(majorreal); 
 
    }
<button onclick="testFunction()">Submit</button>

И нет никаких причин, чтобы использовать синхронные вызовы.

0

Общим соглашением является следовать рисунку ниже. Это позволяет вам что-то делать с результатом, когда это делается, проверяя состояние готовности.

function testFunction(){ 
var soil = new XMLHttpRequest(); 
    soil.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     console.log(this.responseText); 
     } 
    }; 
    soil.open("GET", "https://rest.soilgrids.org/query?lon=5.39&lat=51.57", false); 
    soil.send(null); 
}