shi*_*ara 21 javascript ajax jquery http-status-code-404
我想用JSON中的响应发出Ajax请求.所以我提出了这个Ajax请求:
$.ajax({
url: 'http://my_url',
dataType: "json",
success: function(data){
alert('success');
},
error: function(data){
alert('error');
},
complete: function(data) {
alert('complete')
}})
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但是当我的网址发送给我一个HTTP代码404时,没有使用回调,甚至是完整的回调.经过研究,这是因为我的dataType是'json'所以404返回是HTML并且JSON解析失败了.所以没有回调.
有一个解决方案,当404被引发时调用回调函数?
编辑:完成回调不调用返回是404.如果你想要一个URL机智404你可以打电话:http://twitter.com/status/user_timeline/jksqdlmjmsd.json?count = 3& callback = jsonp1269278524295&_ = 1269278536697这是这个网址我有我的问题.
Dus*_*ine 19
$.ajax({
url: 'http://twitter.com/status/user_timeline/jksqdlmjmsd.json?count=3&callback=jsonp1269278524295&_=1269278536697',
dataType: "json",
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
},
complete: function(xhr, data) {
if (xhr.status != 0)
alert('success');
else
alert('fail');
}
})
Run Code Online (Sandbox Code Playgroud)
使用您的配置,jQuery使用jsonp来传输数据.这可以通过动态插入脚本元素并将URL设置为指定值来实现.然后,服务器返回的数据被评估为JavaScript - 通常调用提供的回调.如果服务器返回404,则内容显然不是JavaScript,并且永远不会调用回调.某些浏览器支持脚本标记上的错误处理程序,在这些情况下会调用它们.不幸的是,IE不支持这一点.检测错误的最佳方法是依赖超时.
在您的情况下,您应该指定一个附加timeout选项,如果未及时调用回调(这将是404响应的情况),则会导致调用错误处理程序.
$.ajax({
url: 'http://my_url',
timeout: 2000, // 2 seconds timeout
dataType: "json",
success: function(data){
alert('success');
},
error: function(data){
alert('error');
},
complete: function(data) {
alert('complete')
}
});
Run Code Online (Sandbox Code Playgroud)
使用statusCode-选项
$.ajax({
url: 'http://my_url',
dataType: "json",
statusCode: {
404: function() {
alert("I could not find the information you requested.");
}
},
success: function(data) {
alert('success');
},
error: function(data) {
alert('error');
},
complete: function(data) {
alert('complete');
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30293 次 |
| 最近记录: |