【问题标题】:Send several $.post request, then call success function发送几个 $.post 请求,然后调用成功函数
【发布时间】:2014-05-28 08:48:45
【问题描述】:

我必须从网页向服务器发送一些请求来注册新用户。 最后,当所有请求都发送完毕后,我重新加载了页面。 问题 : 如果我简单地写这个:

$.post("first request");
$.post("second request");
$.post("third request");
document.location.href=document.location.href;

在发送所有请求之前重新加载页面。 我现在做的是:

$.post("$RequestUri.get('UserSetter.setName')",{param:$("#usernamesignup").val()},
            function(data)
            {
                $.post("$RequestUri.get('UserSetter.setCountry')",{param:$("#countrysignup").val()},
                function(data1)
                {                   
                    $.post("$RequestUri.get('UserSetter.addDeliveringCountry')",{param:$("#countrysignup").val()},
                function(data2)
                    {                   
                        document.location.href=document.location.href;
                    });
                });
            });

太可怕了,不是吗? 将来,我将不得不添加其他请求。 我怎样才能正确地做到这一点? 非常感谢。

尼可

【问题讨论】:

    标签: jquery synchronization .post


    【解决方案1】:

    嗯,我认为没有“干净”的方式。是异步调用。无论如何,也许不是创建匿名函数,而是给它们命名并包装在某种“请求链”中,如下所示:

    function startRequestChain() {
        $.post("$RequestUri.get('UserSetter.setName')",{param:$("#usernamesignup").val()}, function(data){
            firstRequestCallback(data);
        });
    }
    
    function firstRequestCallback(data){
        $.post("$RequestUri.get('UserSetter.setCountry')",{param:$("#countrysignup").val()}, function(rdata){
            secondRequestCallback(rdata);
        });
    }
    
    function secondRequestCallback(data) {
        $.post("$RequestUri.get('UserSetter.addDeliveringCountry')",{param:$("#countrysignup").val()},function(rdata){
            thirdRequestCallback(rdata)
        });
    }
    
    function thirdRequestCallback(data) {
        document.location.href=document.location.href;
    }
    
    startRequestChain();
    

    您可以在此处阅读有关callback hell 的更多信息(尽管对于 node.js,Ajax 的回调地狱类似):

    Callback hell in nodejs?

    http://callbackhell.com/

    Node.js/Async - How to avoid callback hell with async?

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 2014-12-09
      • 2017-03-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多