Wes*_*ley 6 ajax error-handling jquery callback
我正在请求带有ajax的URL,导致HTTP头代码500.我希望这会触发错误函数:
$.ajax({
url: "http://xxx",
dataType: "jsonp",
crossDomain: true,
success: function( data ) {
alert('success');
},
error: function () {
alert('error');
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于safari,但在chrome和firefox中失败.
我究竟做错了什么?
这是最新的jquery 1.4.X,因为我无法升级到更高版本..
响应发送HTTP代码500,内容类型application/json和内容:
jsonp1310063232212({"error":{"reason":"User not found"}})
正如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>
Run Code Online (Sandbox Code Playgroud)
然后你可以使用类似$ .ajax()的函数$ .jsonp():
$.jsonp({
url: "http://xxx?callback=?",
data: {
var: 'test'
},
cache: false,
success: function(data, textStatus) {
// ...
},
error: function(xOptions, textStatus) {
console.log('Error');
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
[1] http://api.jquery.com/jQuery.ajax/
看起来crossDomain:直到 jQuery 1.5 才添加。
http://api.jquery.com/jQuery.ajax/
跨域(1.5新增)
默认值:同域请求为 false,跨域请求为 true。
如果您希望在同一域上强制执行跨域请求(例如 JSONP),请将 crossDomain 的值设置为 true。例如,这允许服务器端重定向到另一个域
就像 Martin Larente 在他的评论中建议的那样,这可能是不同浏览器或 jQuery 如何检测/报告 JSONP 错误的问题。
| 归档时间: |
|
| 查看次数: |
13357 次 |
| 最近记录: |