0

我有一些代码,每 3 秒使用 JQuery $post 将数据从“my_form”发布到服务器。一切正常,但有时可能是因为 Internet 连接速度较慢,当循环触发时,响应不会在 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;
});
}); 
4

1 回答 1

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;
});
}); 
于 2012-09-04T11:08:05.133 回答