获得响应后,JQuery POST数据

时间:2012-09-04 11:02:56

标签: jquery

我有一些代码,每3秒从“my_form”发布数据到JQuery $ post。 一切正常,但有时可能是因为互联网连接速度缓慢,当周期触发时,响应不会在3秒内完成。 这会产生错误。当然,我可以将延迟从3秒增加到6秒甚至更多,但它会减慢进程。 如何才能在获得响应后更改代码以发布数据?

$(document).ready(function() {
    $("#my_form").submit(function() {
        document.forms["my_form"]["submit"].disabled="true";
        counter=0;
        var post_data = function() {
            $.post("formProcessor.php", $("#my_form").serialize(),
            function(data) {
                $("#formResponse").html(data);
                txt = $("#formResponse").text();
                ...
                //some code analyzing response 
                ...
                if (counter == 50){
                    clearInterval(nre);
                    return false;
                };
                changeFields(counter);
            }
        );
    };
    var nre=setInterval(post_data,3000);
    return false;
});
}); 

1 个答案:

答案 0 :(得分:2)

我会在下面的代码中执行某些操作。很简单。只是附加变量requestFinished,如果请求完成,则设置为true。

    var requestFinished = true;
$(document).ready(function() {
    $("#my_form").submit(function() {
        document.forms["my_form"]["submit"].disabled="true";
        counter=0;
        var post_data = function() {
            if(requestFinished) {
                requestFinished = false;
                $.post("formProcessor.php", $("#my_form").serialize(),
                    function(data) {
                        requestFinished = true;
                        $("#formResponse").html(data);
                        txt = $("#formResponse").text();
                        ...
                        //some code analyzing response 
                        ...
                        if (counter == 50){
                            clearInterval(nre);
                            return false;
                        };
                        changeFields(counter);
                    }
                );
            }
    };
    var nre=setInterval(post_data,3000);
    return false;
});
});