$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
}
});
有时成功函数很好,有时不行。
如何为这个ajax请求设置超时?例如,3秒,如果时间超时,则显示错误。
问题是,ajax请求冻结块直到完成。如果服务器宕机一段时间,它将永远不会结束。
$.ajax({
url: "test.html",
error: function(){
//do something
},
success: function(){
//do something
}
});
有时成功函数很好,有时不行。
如何为这个ajax请求设置超时?例如,3秒,如果时间超时,则显示错误。
问题是,ajax请求冻结块直到完成。如果服务器宕机一段时间,它将永远不会结束。
当前回答
如果你的请求通过NginX,不要忘记检查NginX设置。
Ajax选项。超时是一回事,但nginx请求超时可能也需要调整。
参见https://ubiq.co/tech-blog/increase-request-timeout-nginx/
其他回答
使用全功能的。ajax jQuery函数。 以https://stackoverflow.com/a/3543713/1689451为例进行比较。
无需测试,只需将您的代码与引用的SO问题合并:
target = $(this).attr('data-target');
$.ajax({
url: $(this).attr('href'),
type: "GET",
timeout: 2000,
success: function(response) { $(target).modal({
show: true
}); },
error: function(x, t, m) {
if(t==="timeout") {
alert("got timeout");
} else {
alert(t);
}
}
});
你可以像这样在ajax选项中使用超时设置:
$.ajax({
url: "test.html",
timeout: 3000,
error: function(){
//do something
},
success: function(){
//do something
}
});
阅读关于ajax的所有选项:http://api.jquery.com/jQuery.ajax/
请记住,当超时发生时,触发的是错误处理程序而不是成功处理程序:)
您的请求应该如下所示。
client.ajax({
url:'web-url',
method: 'GET',
headers: 'header',
timeout: 3000
});
请阅读$。Ajax文档,这是一个涉及的主题。
$.ajax({
url: "test.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
//do something
},
timeout: 3000 // sets timeout to 3 seconds
});
您可以通过访问error: function(jqXHR, textStatus, errorThrown)选项的textStatus参数来查看抛出的错误类型。选项为timeout、error、abort和parsererror。
如果你的请求通过NginX,不要忘记检查NginX设置。
Ajax选项。超时是一回事,但nginx请求超时可能也需要调整。
参见https://ubiq.co/tech-blog/increase-request-timeout-nginx/