这是我的代码
$.ajax({
url: 'https://api.flightstats.com/flex/schedules/rest/v1/json/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59&callback=?',
dataType: 'JSONP',
jsonpCallback: 'jsonCallback',
type : 'GET',
async: false,
crossDomain: true,
success: function(data) {
console.log(data);
}
});
我做错了什么?我应该在这里添加或更改任何内容吗?任何帮助将不胜感激。谢谢
工作小提琴:
http://jsfiddle.net/repjt/
$.ajax({
url: 'https://api.flightstats.com/flex/schedules/rest/v1/jsonp/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59',
dataType: 'JSONP',
jsonpCallback: 'callback',
type: 'GET',
success: function (data) {
console.log(data);
}
});
我不得不手动将回调设置为 callback
,因为这就是远程服务似乎支持的全部内容。我还更改了网址以指定我想要jsonp。
您正在尝试访问 JSON,而不是 JSONP。
请注意源之间的区别:
https://api.flightstats.com/flex/schedules/rest/v1/json/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59&callback=?
和实际的JSONP(一个包装函数):
http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=processJSON&tags=monkey&tagmode=any&format=json
搜索JSON + CORS/跨域策略,你会发现数百个关于这个主题的SO线程。
我运行这个
var data = '{"rut" : "' + $('#cb_rut').val() + '" , "email" : "' + $('#email').val() + '" }';
var data = JSON.parse(data);
$.ajax({
type: 'GET',
url: 'linkserverApi',
success: function(success) {
console.log('Success!');
console.log(success);
},
error: function() {
console.log('Uh Oh!');
},
jsonp: 'jsonp'
});
并在响应中编辑标题
"访问控制-允许-方法" , "获取、发布、放置、删除"
"访问控制-最大年龄" , "3628800"
'Access-Control-Allow-Origin', 'websiteresponseUrl'
'Content-Type', 'text/javascript; charset=utf8'