我有以下bog标准jQuery ajax请求。我一直试图通过在请求中断我的计算机与网络来引发错误状态(服务器需要10秒钟才能回复,所以这很简单)。
当我断开调用时alert('Success: '+ json);
被调用,null
用于响应json。我希望可以调用错误部分。
任何人都知道为什么断开连接被视为成功,以及如何诱导失败?
$.ajax({
url : 'post.php',
data : { id : 123 },
type: 'POST',
dataType : 'json',
success : function(json) {
alert('Success: '+ json);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert('Error: ' + errorThrown);
},
complete : function(xhr, status) {
}
});
答案 0 :(得分:1)
$.ajax({
url : 'post.php',
data : { id : 123 },
type: 'POST',
dataType : 'json',
success : function(json) {
if(json!=null){
alert('Success');
}else{
exceptionAjax(0,"no server data");
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
exceptionAjax(XMLHttpRequest.statusText,XMLHttpRequest.responseText);
},
complete : function(xhr, status) {
}
});
function exceptionAjax(responseStatus,responseText){
alert('Error');
}
答案 1 :(得分:1)
我认为自jQuery 1.4发布以来存在/是一个错误。
从1.3.2升级后,我注意到在XMLHttpRequest对象上调用abort会触发成功回调,而不是错误回调。在探索代码库之后,我注意到他们已经用自定义的方法替换了典型的中止方法。可能与此有关。
这是关于它的帖子: http://forum.jquery.com/topic/after-aborting-an-ajax-call-success-event-is-still-being-fired