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 一起工作,并等待一个 reuest 完成或出错,然后尝试下一个请求吗?

非常感谢

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

如果请求发生,您可以尝试这样的事情,延迟函数调用一秒钟。

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 回答