即使服务器端进程仍在运行,AJAX调用在60秒后返回200

时间:2017-02-02 11:20:43

标签: javascript jquery ajax

所以我这样做一个AJAX调用:

  $.ajax({
    url: 'download',
    type: 'POST',
    data: JSON.stringify(postData),
    cache: false,
    contentType: 'application/json;charset=UTF-8'
    })
    .done(function(){
      console.log('This was a success')

    })
    .fail(function(jqXHR, textStatus, errorThrown) {
      console.log('This was a fail')
    });
}

如果进程仍在运行,无论60秒后它将返回200。

我不认为它可能是服务器端问题,因为它按预期工作。是否有任何浏览器或AJAX相关的超时我应该考虑?

3 个答案:

答案 0 :(得分:0)

你可以增加超时但不是一个好主意,最好改善服务器端的逻辑

 $.ajax({
    url: 'download',
    type: 'POST',
    data: JSON.stringify(postData),
    cache: false,
    contentType: 'application/json;charset=UTF-8',
    timeout: 60000 // sets timeout to 60 seconds
    })
    .done(function(){
      console.log('This was a success')

    })
    .fail(function(jqXHR, textStatus, errorThrown) {
      console.log('This was a fail')
    });
}

答案 1 :(得分:0)

根据AJAX文档,您可以添加超时属性:

$.ajax({
    url: 'download',
    type: 'POST',
    data: JSON.stringify(postData),
    cache: false,
    contentType: 'application/json;charset=UTF-8',
    timeout: 0,
    })
    .done(function(){
      console.log('This was a success')

    })
    .fail(function(jqXHR, textStatus, errorThrown) {
      console.log('This was a fail')
    });
}
  

timeout = 0表示没有超时限制

官方文档http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

原来这是一个浏览器问题。

Firefox 60将在60秒后超时并返回200个成功代码,即使服务器进程仍在运行。