byJ*_*van 7 javascript ajax jquery html5
我无法在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");
}
}
});
Run Code Online (Sandbox Code Playgroud)
有解决方案吗
byJ*_*van 14
修复:
更改async : false到async: true
原因:
同步AJAX调用将阻塞,直到请求完成.由于技术原因,无法实现超时,因为以后必须执行AJAX调用.
如果稍后执行AJAX调用,该函数必须以某种方式实现阻塞功能,以阻止代码在AJAX调用后进一步运行,并在超时后再次执行 - 不可能.
小智 5
今天(2019年)我仍然遇到这个问题。
我的 ajax 调用太长(取决于日期开始->日期结束)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){
...
Run Code Online (Sandbox Code Playgroud)
我解决了使用:side PHP:
set_time_limit(0);
ignore_user_abort(true);
Run Code Online (Sandbox Code Playgroud)
在脚本的开头。
echo ' ';
flush();
ob_flush();
Run Code Online (Sandbox Code Playgroud)
在脚本的中间(例如每天在主循环中)。这有助于让客户端不要断开连接(我认为这是主要问题)。
使用这个我不断地在最终的 json 之前写入空格。幸运的是jquery在解析json之前修剪了空格,最终json是有效的。
因此,我可以捕获响应对象来了解脚本是否因错误或警告而结束。
我希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
11436 次 |
| 最近记录: |