我建立了一个天气网站,首先调用 flickr API,然后调用 yahoo API 获取天气信息。问题是来自 ajax 调用的数据 - 来自 yahoo API 没有及时到达页面加载其内容。
我曾尝试减慢 ajax 调用的一些方法:
设置超时
- 将
$.ajax(success: )
调用的整个函数包装到另一个函数中,将其包装在setTimeout
- 从
$.ajax(success:)
中取出回调函数,放入$.ajax(complete:)
参数 - 获取
$.ajax(success: )
传入的data
对象,并将其复制到另一个 var,然后在 ajax 调用之外放置函数处理$.ajaxComplete()
中的数据,传递新对象var
我尝试过更多方法来解决这个问题,但我已经研究了 3 天,但找不到解决方案。有人可以帮我吗
这是项目的链接
function RunCALL(url)
{
var comeBack = $.ajax({
url: url,
async: false,
dataType:"jsonp",
crossDomain: true,
method: 'POST',
statusCode: {
404: function() {console.log("-4-4-4-4 WE GOT 404!");},
200: function() {console.log("-2-2-2-2 WE GOT 200!");}},
success: function(data){
weatherAndFlickrReport(data);},
error: function(e) {console.log(e);}
});
}
最佳答案
你在使用 jQuery 吗?如果是这样,你必须链接你的回调。从高层次上看,它看起来像:
//You might want to use .get or .getJSON, it's up to what response you're expecting...
$.getJSON('https://example.com/api/flickr', function(response) {
//This your callback. The URL would end up being https://example.com/api/yahoo/?criteria=lalalalala
$.getJSON('https://example.com/api/yahoo/', { criteria: response.propertyYouWant}, function(yahooResponse) {
//Do something with your response here.
});
});
编辑:我已经用一个可行的解决方案(基于上述 AJAX 请求)更新了您的代码段,现在显示您的两个 JSON 对象已准备好使用。 Looky here.
关于javascript - ajax调用不会同步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230950/