如何让ajax连接超时时自动停止
时间:2011-07-28
来源:互联网
如题,我知道ajax中有个ajaxGet.abort()方法来停止ajax.但是如何控制时间了?我想到js中的setTimeOut方法,如果再结合clearTimeOut方法是不是就可以完美的实现这个功能了呢?
结果是悲剧的。
不是说setTimeOut(ajaxGet.abort(),5000);不执行,而是与时间无关,不管设多久都会立刻执行。。。
也许我们可以考虑把ajaxGet.abort()放到别的函数中去,然后用传参的方法定时调用。不过,我也尝试过,结果是不仅不可以终止ajax,而且还会让js事件失效。
我的代码如下,是写在表单提交事件中的。
JScript code
当然,现在已经删掉停止ajax的方法了,但基本结构还在。
最后虽然没有实现这个功能,却也思考了一下其必要性。其实也不是非要实现这个功能不可,试想,如果真的很久都获取不到数据或者没有反应,用户自己会察觉的,或者像我上面那样给出提示即可,没必要硬要去终止ajax.
但怕的就是你都显示超时了,ajax突然起死回生了。。。。
我也就是为了避免后者的尴尬局面才想实现这个功能。。。不过,现在实现不了我就只能把提醒超时的时间设置的久一点了。
结果是悲剧的。
不是说setTimeOut(ajaxGet.abort(),5000);不执行,而是与时间无关,不管设多久都会立刻执行。。。
也许我们可以考虑把ajaxGet.abort()放到别的函数中去,然后用传参的方法定时调用。不过,我也尝试过,结果是不仅不可以终止ajax,而且还会让js事件失效。
我的代码如下,是写在表单提交事件中的。
JScript code
$('#invite-contact-list-form').submit(function(){ $('#invite-contact-list-prompt').html('正在发送邮件...').css("color","#000"); var outTimeID = setTimeout('$("#invite-contact-list-prompt").html("发送超时,请重试!");', 5000);//设置5秒的超时终止ajax时间 var ajaxGet = $.post($(this).attr('action'),$(this).serialize(),function(o){ clearTimeout(outTimeID);//取消超时设置 $('#invite-contact-list-prompt').empty(); alert(o.info); },'json'); return false; });
当然,现在已经删掉停止ajax的方法了,但基本结构还在。
最后虽然没有实现这个功能,却也思考了一下其必要性。其实也不是非要实现这个功能不可,试想,如果真的很久都获取不到数据或者没有反应,用户自己会察觉的,或者像我上面那样给出提示即可,没必要硬要去终止ajax.
但怕的就是你都显示超时了,ajax突然起死回生了。。。。
我也就是为了避免后者的尴尬局面才想实现这个功能。。。不过,现在实现不了我就只能把提醒超时的时间设置的久一点了。
作者: yiqiang1314 发布时间: 2011-07-28
帮顶啦
作者: lsw645645645 发布时间: 2011-07-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28