0

「my_form」から3秒ごとに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;
});
}); 
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 に答える