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