我有三个ajax请求。仅在第一个之后才能解雇第二个,第二个之后可以解雇第三个。

目前,我正在一起编写所有三个ajax请求。

$("#button-1").click(function() {
    $.ajax({
        //something
        success: function(response) {
             $("#content").html(response);
        },
    });
});
$("#content").ready(function(){
$("#button-2").click(function() {
    $.ajax({
        //something
    });
});});
$("#content").ready(function(){
$("#button-3").click(function() {
    $.ajax({
        //something
    });
});});


我怎样才能更好地使用回调将上面的js代码结构化并将每个ajax请求封装到一个单独的函数中?
我看过很多SO帖子,但找不到可靠的方法。即使有人可以发布任何教程/博客/ SO帖子也很好。

最佳答案

恕我直言,他们的方法是延迟button2和button3的事件处理程序注册,例如

jQuery(function () {
    function ajax1() {
        return $.ajax({
            success: function (response) {},
        });
    }

    function ajax2() {
        return $.ajax({
            success: function (response) {},
        });
    }

    function ajax3() {
        return $.ajax({
            success: function (response) {},
        });
    }

    $("#button-1").click(function () {
        ajax1().done(function () {
            $("#button-2").click(function () {
                ajax2().done(function () {
                    $("#button-3").click(ajax3)
                })
            })
        })
    });
});


更新:版本略有不同

jQuery(function () {
    function ajax1() {
        return $.ajax({
            success: function (response) {
                //something
                $("#button-2").click(ajax2)
            }
        });
    }

    function ajax2() {
        return $.ajax({
            success: function (response) {
                //something
                $("#button-3").click(ajax3);
            }
        });
    }

    function ajax3() {
        return $.ajax({
            success: function (response) {
                //something
            }
        });
    }

    $("#button-1").click(ajax1);
});

关于javascript - 为ajax请求编写jQuery回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19763154/

10-11 09:11