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?的主要内容,如果未能解决你的问题,请参考以下文章