jquery ajax:如何知道它是否在等待服务器或服务器错误503?

时间:2016-12-06 11:56:21

标签: jquery ajax http-status-code-503

我使用" timeout"创建了一个ajax调用30秒的选项和锁定屏幕的模态 如果30秒过去或者我从服务器得到响应,则返回一个回调,我可以检查它并解锁模态(隐藏它)。
但是当服务器错误如#34;服务器503"时,ajax将等到30秒后才会通过,然后它才会解锁屏幕。
如何用jquery捕获这个服务器503错误?

3 个答案:

答案 0 :(得分:0)

尝试:

$.ajax({
  url: 'Yoururl',
  type: 'post',
  data: {
    'YourData': 'YourData'
  },
  success: function(output) {},
  error: function(request, status, error) {
    alert(request.responseText);
    // Check error and do what ever you want to do
  },
});
}

答案 1 :(得分:0)

如果您只想在

时隐藏模态
  1. 服务器响应结果
  2. 服务器返回错误
  3. 超时已过期
  4. 除了timeout承诺回调之外,您还可以使用jQuery AJAX的.always()选项。以下是一个例子:

    $.ajax(url, {
      timeout: 30000, // in milliseconds
      // other AJAX options
    }).done(function() {
      // Handle the successful response
    }).fail(function() {
      // Handle the failures (server errors and timeouts)
    }).always(function() {
      // Hide your modal here
    });
    

    当AJAX调用完成时,这将确保您的模态始终隐藏。

    您可以详细了解$.ajax函数here

答案 2 :(得分:0)

你应该能够读取状态以检测503.我在过去的项目中使用了类似的检测404.

        $.ajax({ url: 'somepage.php',
                 type: 'post',
                 data: {'q': ''},
                 success: function(output) {
                    alert(output);
                 },
                 error: function (request, status, error) {
                        // WE HAVE AN ERROR, LETS SEE WHAT SPECIFIC ERROR CODE...
                        if (request.status == 503){
                                // IF THE ERROR CODE IS 503, THEN WE DO SOMETHING HERE...
                                alert('I have the dreaded 503 error!')
                        }
                 },

        })