如何忽略ajax超时?

时间:2017-05-16 11:56:54

标签: javascript jquery ajax timeout

我们希望将决定留给用户取消(中止)请求或等待响应。发生超时时,应出现一个确认对话框,为用户提供等待响应或中止请求的机会:

$.ajax({
    [...]
    timeout: 2000,
    success: function(data) {   
        [...]
    };   
});


$.ajaxSetup({
    error: function(data, textStatus, pStatusDescription) {

         if(textStatus === "timeout")
         {
            if(confirm("Do you want to wait for the response?"))
            {
                // continue request
            }
            else
            {
                // abort request
            }
         }
    }
});

1 个答案:

答案 0 :(得分:0)

您可以使用其他方式,通过独立于ajax请求设置超时:

let xhr;

const timeout = setTimeout(() => {
  if(confirm("Do you want to wait for the response?")) {
    // may be some code here
  } else {
    xhr.abort()
  }
}, 2000);

xhr = $.ajax({
  [...]
  error: function() {
    clearTimeout(timeout);
  }
  success: function(data) {
    clearTimeout(timeout);
  
    [...]
  };   
});