如何让ajax连接超时时自动停止 - Web 开发 / Ajax
如题,我知道ajax中有个ajaxGet.abort()方法来停止ajax.但是如何控制时间了?我想到js中的setTimeOut方法,如果再结合clearTimeOut方法是不是就可以完美的实现这个功能了呢?
结果是悲剧的。
不是说setTimeOut(ajaxGet.abort(),5000);不执行,而是与时间无关,不管设多久都会立刻执行。。。
也许我们可以考虑把ajaxGet.abort()放到别的函数中去,然后用传参的方法定时调用。不过,我也尝试过,结果是不仅不可以终止ajax,而且还会让js事件失效。
我的代码如下,是写在表单提交事件中的。
$('#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; });