0

私は多くのスレッド、私の問題に関する質問を読み、答えを見つけました。しかし、私の機能が大丈夫かどうかを確認したいと思います。

onclickイベントで異なるIDのフォームを処理する必要があります。

function setBoocking() {
    if ($('.ajaxre').length) {
        var key = 0;
        //var ajaxboocking = [];
        var sotredPDF = new Array();
        $('.ajaxre').each(function () {
            var form = $(this);
            var data = form.serialize();
            $.ajax({
                async: false,
                timeout: 4000,
                url: "ajaxloader.php",
                type: "POST",
                data: data,
                dataType: "json",
                success: function ($data) {
                    if ($data != null) {
                        if ($data.status == 1) {
                            alert("all fine"):
                        }
                    }
                },
                error: function ($databack) {
                    ajaxfehler('normal');
                    loading('end');
                }
            });
        });
    }
}

html

<div class="ajaxre">
    <form class="ajaxre" id="1">
        <input type="hidden" name="test" value="test1" />
    </form>
</div>
<div class="ajaxre">
    <form class="ajaxre" id="2">
        <input type="hidden" name="test" value="test2" />
    </form>
</div>
<div class="ajaxre">
    <form class="ajaxre" id="3">
        <input type="hidden" name="test" value="test3" />
    </form>
</div>
<br />
<br /><a onclick="setBoocking();">test</a>

だからあなたは私が私のajaxリクエストasync:falseにあるのを見るでしょう。それはうまくいきます。しかし、関数に非同期リクエストを使用させることはできますか?「timout関数を設定します」はasncで機能せず、1つの再試行が完了するのを待つか、エラーが発生してから次のリクエストを試行しますか?

どうもありがとう

4

2 に答える 2

0

Ajax リクエストは遅延として知られているものを返しました。できることは、すべての ajax リクエストのレスポンスを配列に格納してから使用することです。

$.when.apply($, promises).then(function(){
});

これにより、すべての呼び出しが非同期で実行できるようになります。(Promises は ajax 遅延オブジェクトの配列です)。

この投稿は、完全に理解するのに役立ちます:

http://richardneililagan.com/2011/05/using-deferred-objects-in-jquery-1-5/

于 2013-03-01T08:09:50.913 に答える
0

リクエストが発生した場合は、このようなことを試して、関数呼び出しを 1 秒遅らせることができます。

var pause = false;
function request(data) {
    if (!pause) {
        pause = true;
        $.ajax({
            url: "ajaxloader.php",
            type: "POST",
            data: data,
            dataType: "json",
            success: function ($data) {
                if ($data != null) {
                    if ($data.status == 1) {
                        alert("all fine");
                        pause = false;
                    }
                }
            },
            error: function ($databack) {
                ajaxfehler('normal');
                loading('end');
                pause = false;
            }
        });
    } else {
        setTimeout(function() {
            request(data);
        }, 1000);
    }
}


function setBoocking() {
    if ($('.ajaxre').length) {
        var key = 0;
        //var ajaxboocking = [];
        var sotredPDF = new Array();
        var in_request = false;
        $('.ajaxre').each(function () {
            request($(this).serialize());
        });
    }
}
于 2013-02-24T18:54:54.440 に答える