阿贾克斯jQuery的同步回调成功(Ajax jquery synchronous callback

2019-08-18 08:42发布

我有这样的功能,使一个Ajax调用。 我描述的代码注释的最后一个块的问题。

    function doop(){
            var that = this;
            var theold = "theold";
            var thenew = "thenew";

            $.ajax({
                    url: 'doop.php',
                    type: 'POST',
                    data: 'before=' + theold + '&after=' + thenew,
                    success: function(resp) {
                            if(resp == 1) {
                                    $(that).siblings('.theold').html(thenew);
                            }
                    }
            });

            // I have some code here (out of the ajax) that **further** changes 
            // the .theold's html beyond what it was changed inside ajax success
            // but the change depends on whether the resp (inside the success 
            // function) returned 1 or not, so this code out here depends on the ajax
            // so it looks like I have to turn this ajax call into a sync ajax

            return false;
    }

基于在代码注释中描述的问题,什么样的变化是最适合这种情况呢?

Answer 1:

您需要设置异步:假像这样同步请求:

function doop(){
        var that = this;
        var theold = $(this).siblings('.theold').html();
        var thenew = $(this).siblings('.thenew').val();

        $.ajax({
                async: false,
                url: 'doop.php',
                type: 'POST',
                data: 'before=' + theold + '&after=' + thenew,
                success: function(resp) {
                        if(resp == 1) {
                                $(that).siblings('.theold').html(thenew);
                        }
                }
        });

        // some other code

        return false;
}

看到这里了解详细信息



Answer 2:

无论是设置Ajax调用为同步为stefita指出的,或只是将你的代码到成功回调。 你为什么不能这样做呢? 即使它是另一种AJAX调用它仍然可以做到的 - 你可以嵌套它们。 随着迄今您提供的信息(我看不出有问题的代码,也没有我对你的项目足够的领域知识),我没有看到一个问题,真的。



Answer 3:

我更喜欢使用的回调,因为它实现了准确无需实际使其同步相同的结果来完成这项工作。 我使用的成功:回调,然后通过回调作为参数。

 function getData(callback) {
      $.ajax({
          url: 'register/getData',
          data: "",
          dataType: 'json',
          success: callback
      });
  }

然后,我这样调用这个函数:

  getData(function(data){
    console.log(data); //do something 
  });


文章来源: Ajax jquery synchronous callback success