JQuery多个帖子同时发布

时间:2015-06-22 12:46:06

标签: javascript php jquery json

我有三个函数,每个函数都发布到特殊的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();
});

如何在同一时间线程处理所有帖子?

2 个答案:

答案 0 :(得分:3)

你可以在函数(https://api.jquery.com/jquery.when/)时使用jQuery来等待所有三个promises解析。

您只需要确保在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 beacuse它会更快执行。

答案 1 :(得分:1)

您可以使用jQuery.when一次调用所有ajax请求。 $(function () { $('.like').click(function () { likeFunction(this); }); $('.dislike').click(function () { dislikeFunction(this);}); }); function likeFunction(caller) { var postId = caller.parentElement.getAttribute('postid'); $.ajax({ type: "POST", url: "rate.php", data: 'Action=LIKE&PostID=' + postId, success: function () {} }); } function dislikeFunction(caller) { var postId = caller.parentElement.getAttribute('postid'); $.ajax({ type: "POST", url: "rate.php", data: 'Action=DISLIKE&PostID=' + postId, success: function () {} }); } <div class="post" postid="10"> <input type="button" class='like' value="LikeButton" /> </input> <input type="button" class='dislike' value="DislikeButton"> </input> </div> 事件可以集体处理。

例如

success

此处,failure函数的参数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的成功数据。