[英]JSON call inside JSON response.
我在另一个调用中有一个JSON API调用。 这是因为loadJSON()需要第一次调用的动态数据(lat / lon值)。
由于数据是异步的,因此它似乎无法及时工作 - 因此控制台会在控制台的末尾输出站名。
但是正确的站名不会注入正确的站ID(例如站-4)。
任何帮助非常感谢。 请注意,我理想地寻找一种不依赖于jQuery的解决方案。
window.apiCallback = function(data) {
for (i=0; i < 10; i++) {
document.getElementById("title-"+i+"").innerHTML = data.results[i].name;
}
loadJSON('http://trainstationsdata/near.json?lat='+data.results[i].venue.lat+'&lon='+data.results[i].venue.lon+'&page=1&rpp=1',
function(result) {
// this works and outputs at the end of console
console.log(result.stations[0].name);
// this doesn't work
document.getElementById("station-"+i+"").innerHTML = result.[i].station_name;;
},
function(xhr) { console.error(xhr); }
);
}
function loadJSON(path, success, error)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
if (success)
success(JSON.parse(xhr.responseText));
} else {
if (error)
error(xhr);
}
}
};
xhr.open("GET", path, true);
xhr.send();
}
您可以尝试成功,或完成ajax方法,该方法在请求完成时运行(在成功和错误函数之后)。
像这样的东西。
function testAjax(handleData) {
$.ajax({
url:"getvalue.php",
complete:function(data) {
handleData(data);
}
});
}
没有JQuery的解决方案就是这样的。
var r = new XMLHttpRequest();
r.open("POST", "webservice", true);
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
console.log(r.responseText);
};
r.send("a=1&b=2&c=3");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.