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

Posted

技术标签:

【中文标题】jquery ajax:如何知道它是在等待服务器还是服务器错误 503?【英文标题】:jquery ajax: how to know if it's waiting for server or server error 503? 【发布时间】:2017-04-21 01:26:20 【问题描述】:

我创建了一个带有 30 秒“超时”选项的 ajax 调用和一个锁定屏幕的模式。 如果 30 秒过去或我从服务器得到响应,则返回一个回调,我可以检查它并解锁模式(隐藏它)。 但是当出现像“server 503”这样的服务器错误时,ajax 会等到 30 秒过去,然后才会解锁屏幕。 如何使用 jquery 捕获服务器 503 错误?

【问题讨论】:

【参考方案1】:

试试看:

$.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
  ,
);

【讨论】:

我只有在超时没有立即通过但chrome立即返回错误时才会收到警报。【参考方案2】:

如果你只是想隐藏模态时

    服务器响应结果 服务器返回错误 超时已过

您可以使用 jQuery AJAX 的 timeout 选项,以及 .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 的更多信息。

【讨论】:

我只有在超时没有立即通过但chrome立即返回错误时才会收到警报。 你能用你的完整代码创建一个小提琴吗?我想看看你是如何使用超时的。【参考方案3】:

您应该能够读取状态以检测 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!')
                        
                 ,

        )

【讨论】:

我只有在超时没有立即通过但chrome立即返回错误时才会收到警报。 不,我忽略了它,令人惊讶的是,似乎没有真正的答案!你有吗?

以上是关于jquery ajax:如何知道它是在等待服务器还是服务器错误 503?的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:在返回之前等待回调

异步等待 Jquery ajax 回调?

等待ajax响应时如何防止用户交互?

如何给JQUERY+AJAX加上加载等待效果

如何在选择条件之前等待 JQUERY AJAX 响应

jquery在点击事件后等待ajax加载完成