[英]Timeout not working in ajax post request
我无法在3秒后制作ajax错误回调函数。 我尝试了超时,但在指定的时间后它不会切换到错误回调! 我无法获得警报Got timeout
。
当我在这个网站上提到类似问题的类似问题时,它没有帮助。 它们都使用ajax GET类型。 我正在使用jquery 1.10.1库。
脚本:
$.ajax({
type: 'POST',
timeout: 3000,
url : "http://mydomain/Services.asmx/Best_Scores",
dataType: "text",
async:false,
crossDomain:true,
data: "strJsonRequest="+scoredata,
success: function (data) {
// Success code ...
},
error: function (data, textStatus, errorThrown) {
if(textStatus == "timeout") {
alert("Got timeout");
}
}
});
有解决方案吗
修复:
将async : false
更改为async: true
原因:
同步AJAX调用将阻塞,直到请求完成。 由于技术原因,无法实现超时,因为以后必须执行AJAX调用。
如果稍后执行AJAX调用,该函数必须以某种方式实现阻塞功能,以阻止代码在AJAX调用后进一步运行,并在超时后再次执行 - 不可能。
今天(2019年),我仍然有这个问题。
我有一个ajax调用太长时间(取决于Date Start-> Date End)php脚本。
几分钟后我得到错误500,async:true没有帮助。
电话是:
$.ajax({
type: "GET",
dataType: 'json',
url: 'mymscript.php',
contentType:'application/json;charset=UTF-8;',
data: $('[name="myForm"]').serialize(),
async:true,
timeout:0,
success: function(response){
...
我决定使用:side PHP:
set_time_limit(0);
ignore_user_abort(true);
在脚本开始。
echo ' ';
flush();
ob_flush();
在脚本中间(例如每天在主循环中)。 这有助于让客户端不要断开连接(我认为这是主要问题)。
使用这个我继续为最终的json写空格。 幸运的是,jquery在解析json之前修剪了空格,最后,json是有效的。
所以我可以捕获响应对象,以了解脚本是否以错误或警告结束。
我希望这能帮助别人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.