JQuery同时发布多个帖子

JQuery mutiple post in the same time

本文关键字:布多个 JQuery      更新时间:2023-09-26

我有三个函数,每个函数都发布到特殊的php页面来获取数据。。

每个函数都需要一段时间,因为每个php脚本都需要一些时间。。

function nb1() {
    $.post("p1.php", {
            action: 1
        }, function(data) {
            console.log(data);
        }, "json")
        .fail(function(data) {
            console.log("error");
        });
}
function nb2() {
    $.post("n2.php", {
            action: 1
        }, function(data) {
            console.log(data);
        }, "json")
        .fail(function(data) {
            console.log("error");
        });
}
function nb3() {
    $.post("c3.php", {
            action: 1
        }, function(data) {
            console.log(data);
        }, "json")
        .fail(function(data) {
            console.log("error");
        });
}
$(window).load(function() {
    nb1();
    nb2();
    nb3();
});

如何将所有帖子线程化以在同一时间工作?

您可以使用jQuery-when函数(https://api.jquery.com/jquery.when/)等待这三个承诺都得到解决。

您只需要确保在nb1、nb2、nb3函数中也返回了promise。

  function nb1() {
        return $.post("p1.php", {
                action: 1
            }, function(data) {
                console.log(data);
            }, "json")
            .fail(function(data) {
                console.log("error");
            });
    }
    function nb2() {
        return $.post("n2.php", {
                action: 1
            }, function(data) {
                console.log(data);
            }, "json")
            .fail(function(data) {
                console.log("error");
            });
    }
    function nb3() {
        return $.post("c3.php", {
                action: 1
            }, function(data) {
                console.log(data);
            }, "json")
            .fail(function(data) {
                console.log("error");
            });
    }
    $(window).load(function() {
        $.when(nb1(), nb2(), nb3()).then(function(){
            ///
        });
    });

你真的需要等待window.load吗?否则我会使用document.ready,因为它执行得更快。

您可以使用jQuery.when一次调用所有ajax请求。并且CCD_ 1或CCD_。

例如。

jQuery.when(
    jQuery.post("p1.php", {
        action: 1
    }),
    jQuery.post("n2.php", {
        action: 1
    }),
    jQuery.post("c3.php", {
        action: 1
    })
  ).done(function(a1, a2, a3){
    // handle success
    var p1_responseTxt = a1;
    var n2_responseTxt = a2;
    var c3_responseTxt = a3;
  }).fail(function (jqXHR, textStatus, errorThrown) {
    // handle error
});

这里,done函数的参数a1, a2, a3分别对应于p1, n2, c3的成功数据。