我通过ajax请求action,action返回信息停止定时器,可是断网重连后定时器会弹出好几次信息才停止
function getAlertMessage() {
var url = $("#alertMaessage").val();
$.post(url, {}, function(data) {
var loggerinfo = data.split("_");
if (loggerinfo[1] == "success") {
alert("导入成功");
clearInterval(alertTimer); } else if (loggerinfo[1] == "fail") {
alert("导入失败");
clearInterval(alertTimer);
}
});
}JavaScriptAjax

解决方案 »

  1.   

    用setTimeout,不要用setInterval,要不到指定的时间就会重复执行
      

  2.   

    您仔细看代码了么?我这是肯定是多次执行这个ajax请求,根据后台传回的信息才停止,这setTimeout时间设置什么?
      

  3.   


    您仔细看代码了么?我这是肯定是多次执行这个ajax请求,根据后台传回的信息判断后才停止,用setTimeOut行么?
      

  4.   

    setTimeout你可以在回调里面重启setInteval如果ajax网速慢还没有返回就会又启动一次ajax,只有成功返回一次后才停掉计时器,谁知道第一次返回中到底启动过了几次计时器。。你的setInterval间隔也没说,
      

  5.   


    好的,那我试试去!不太对啊
    function submitParForm() {
        $("#importParForm").submit();
        alertTimer = setInterval("getAlertMessage()", "2000");
    }
    我是在提交这个form后在开启定时器调用这个getAlertMessage方法ajax回调后,判断结果再停止定时器,可能是我没说清楚问题!
      

  6.   

    表单是直接提交后刷新页面还是使用了其他无刷新提交插件来做?如果是提交表单后,页面就卸载了,不会执行定时器代码。。如果是无刷新,用firefox的firebug或者chrome监视下一共发送了多少个xhr请求
      

  7.   


    form也是无刷新提交的,不知道为什么这个问题死活不出现了.虽然没有解决但是也谢谢你!