Javascript flightstats和jQuery-回调失败
我一直在尝试查询flightstats API,现在(我想)我已经到了最后一个关口。。我有一个工作的ajax请求/响应,它返回正确的数据,但是总是调用error函数,而不是success。这是因为回调参数的使用方式,但我不知道需要什么,也找不到文档 下面是我的代码,请记住,如果我省略回调参数,我会得到相同的错误文本,就像我使用“&callback=…”、“&callback=?”、“?callback=…”或“?callback=?”包含它一样,因为在每种情况下,jQuery都会添加另一个回调参数Javascript flightstats和jQuery-回调失败,javascript,jquery,ajax,callback,Javascript,Jquery,Ajax,Callback,我一直在尝试查询flightstats API,现在(我想)我已经到了最后一个关口。。我有一个工作的ajax请求/响应,它返回正确的数据,但是总是调用error函数,而不是success。这是因为回调参数的使用方式,但我不知道需要什么,也找不到文档 下面是我的代码,请记住,如果我省略回调参数,我会得到相同的错误文本,就像我使用“&callback=…”、“&callback=?”、“?callback=…”或“?callback=?”包含它一样,因为在每种情况下,jQuery都会添加另一个回调参
$.ajax({
url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/json/flight/status/QF/1/dep/2013/08/22?appId=<appId>&appKey=<appKey>&utc=false',
data: {},
dataType: 'jsonp',
cache: false,
success: function(data) {
$('#response').html(data);
},
error: function(xhr, ajaxOptions, thrownError) { //do with ajax errors
console.log('Fail: ' + thrownError);
}
});
如果调用了URL,在这种情况下: &appKey=&utc=false
如果不返回HTTP 200 OK代码,则会触发错误函数。我找到了修复程序,代码如下。我没有在请求中指定jsonp,所以返回的格式是纯json,我也不理解jsonp的细微差别,并通过其他stackoverflow问题解决了它
$.ajax({
type: 'GET',
url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/jsonp/flight/status/QF/1/dep/2013/08/22?appId=<appId>&appKey=<appKey>&utc=false',
dataType: 'jsonp',
jsonpCallback: 'flightstatus',
//jsonpCallback: 'flightstatus',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); }
});
$.ajax({
键入:“GET”,
网址:'https://api.flightstats.com/flex/flightstatus/rest/v2/jsonp/flight/status/QF/1/dep/2013/08/22?appId=&appKey=&utc=false',
数据类型:“jsonp”,
jsonpCallback:“flightstatus”,
//jsonpCallback:“flightstatus”,
success:function(){console.log('success!');},
错误:函数(){console.log('Uh-Oh!');}
});
它正在返回HTTP 200 OK-也许我不够清楚,它得到了正确的响应以及json数据。我在jquery网站上读到了这篇文章。。我可以看出这是一个jquery问题,与API无关。。“当从远程服务器检索数据时(只能使用脚本或jsonp数据类型),将永远不会触发错误回调和全局事件。”因此,不应触发错误函数。我现在删除了它,但是json数据中出现了错误“uncaughtSyntaxError:Unexpected-token:22:1”。我将继续查看jquery文档。如果没有看到您的SSCE,我们无法判断这一点,但我也注意到您没有指定jsonpCallback函数,也没有指定contentType。也许你应该看看这里的一个工作示例:并使用其中一个。它是固定的-使用下面的代码。$。ajax({type:'GET',url:'',数据类型:'jsonp',jsonpCallback:'flightstatus',//jsonpCallback:'flightstatus',成功:function(){console.log('success!');},错误:function(){console.log!'('Uh-Oh!';}});
$.ajax({
type: 'GET',
url: 'https://api.flightstats.com/flex/flightstatus/rest/v2/jsonp/flight/status/QF/1/dep/2013/08/22?appId=<appId>&appKey=<appKey>&utc=false',
dataType: 'jsonp',
jsonpCallback: 'flightstatus',
//jsonpCallback: 'flightstatus',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); }
});