我正在使用 ajax 请求一个 URL,该 URL 会产生 HTTP header 代码 500。我希望这会触发错误函数:
$.ajax({
url: "http://xxx",
dataType: "jsonp",
crossDomain: true,
success: function( data ) {
alert('success');
},
error: function () {
alert('error');
}
});
这在 safari 中有效,但在 Chrome 和 Firefox 中失败。
我做错了什么?
这是最新的jquery 1.4.X,由于原因我无法升级到更高版本..
响应发送 HTTP 代码 500,内容类型 application/json 和内容:
jsonp1310063232212({"error":{"reason":"找不到用户"}})
最佳答案
如 JQuery 文档 [1] 中所述,不会为跨域脚本和 JSONP 请求调用错误处理程序。它在旧版本的 JQuery 上工作(并不总是)。
我使用一个紧凑而有效的插件来解决这个问题,其中包括一个很好的错误处理程序: http://code.google.com/p/jquery-jsonp/
下载并添加到头部:
<script src="javascripts/jquery.jsonp-2.2.0.min.js" type="text/javascript"></script>
然后你可以使用类似于$.ajax()的函数$.jsonp():
$.jsonp({
url: "http://xxx?callback=?",
data: {
var: 'test'
},
cache: false,
success: function(data, textStatus) {
// ...
},
error: function(xOptions, textStatus) {
console.log('Error');
// ...
}
});
关于jQuery ajax 错误回调未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615084/