当计算机断开连接时,jQuery .ajax调用显示成功。如何诱导ajax错误状态?

时间:2010-07-11 16:29:55

标签: ajax jquery xmlhttprequest

我有以下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) { 

 }
});  

2 个答案:

答案 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