我正在尝试向服务器发出JSONP请求。这是我的代码:
$.ajax({
type: 'GET',
url: myURL,
async: false,
crossDomain: true,
dataType: 'jsonp',
jsonpCallback: 'jsonCallback',
headers: {
'Accept': 'application/json', //this is required by the server
'key': key
},
success: function() {
alert('1');
},
error: function() {
alert('2');
},
complete: function(){
alert('3');
}
});//code indentation
当我运行代码时,它会出错。但是,如果我在Chrome中打开开发人员工具(ctrl + shift + I),我可以在“网络”下看到请求。单击它会显示正确的响应(并显示请求已被接受)。
道歉是否有一个非常明显的解决方案(我已经尝试过搜索,但没有运气),但在这一点上我很好,真的很困惑。任何帮助都会非常感激。:: EDIT ::
将错误功能更改为:
error: function() {
console.log('error', arguments);
},
返回消息“jsonCallback未被调用”感谢下面的Aaron Digulla。
服务器的响应是JSON,而不是JSONP(使用JSONlint检查)
答案 0 :(得分:1)
成功函数有参数,你可以从该参数得到响应文本。
$.ajax({
type: 'GET',
url: myURL,
async: false,
crossDomain: true,
dataType: 'jsonp',
jsonpCallback: 'jsonCallback',
headers: {
'Accept': 'application/json', //this is required by the server
'key': key
},
success: function(response) {
alert(response);
alert('1');
},
error: function() {
alert('2');
},
complete: function(){
alert('3');
}
});
答案 1 :(得分:0)
由于jsonp请求的性质,你无法为{jonp}请求设置async: false
,添加脚本标记来处理响应方法。
答案 2 :(得分:0)
dataType: 'jsonp
正如你所提到的,你期望从服务器返回的数据类型是jsonp,但可能是你的服务器将返回任何其他格式而不是jsonp ..所以检查你的服务器返回的响应类型浏览器控制台中的网络...如果它不是jsonp格式,请更改您的响应返回类型....