SetInterval不重复执行函数

时间:2016-01-16 13:19:25

标签: javascript jquery

我有一个像这样的js结构:

var intervalID;

function counterUpdater(){
    intervalID = setInterval(ajax_counter_upload(),10000);  
}
function ajax_counter_upload(){
    $.ajax({
        type: "POST",
        url: "plan/counter.php",
        data: {tipo:'BP'},
        success: function(data){
            $("#spinner_msg").fadeTo(200,0.1,
                function(){
                    $(this).html(data);
                    $(this).fadeTo(900,1);
                });
        }
    });
}
function ajax_submit(){
    var submit_val=$("#stato").serialize();
    dest="plan/new_bp1.php";
    $.ajax({
        type: "POST",
        url: dest,
        data: submit_val,
        success: function(data){ 
            data1=data.split("|");
            if(data1[0]=="Successo"){ 
                $("#spnmsg").fadeTo(200,0.1,
                    function(){$(this).removeClass().addClass("spn_success").html(data1[1]).fadeTo(900,1)});
                }else if(data1[0]=="Errore"){
                    $("#spnmsg").fadeTo(200,0.1,
                    function(){$(this).removeClass().addClass("spn_error").html(data1[1]).fadeTo(900,1)});  
                }
        },
        complete: function(){
            clearInterval(intervalID);
            setTimeout(function(){ $('.container').load('plan/home.php');},2000); 
        }
    });
    setTimeout(function(){counterUpdater();},2000);
}

目标是在ajax_submit启动时每10秒运行一次counter_updater,并在ajax_submit结束时停止它。

我现在得到的只是运行一次counter_updater。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的setInterval调用有一个错误:在(预期的)回调函数名后面有括号,这意味着该函数实际上被调用一次而setInterval只获得返回值(在这种情况下没有)

只需删除括号:

intervalID = setInterval(ajax_counter_upload, 10000);
//                                         ^^