【问题标题】:ajax complete function invoking after dom is readydom准备好后调用ajax完成函数
【发布时间】:2013-05-30 09:55:02
【问题描述】:

我需要发出一个 ajax 请求,然后处理一些从服务器返回的数据。我想早点提出这个请求,然后文件就准备好了。但是我只有在文件准备好后才能处理数据。我有一个想法来做这样的事情:

$.when($(document).ready(),
       $.ajax(/*some request*/)).done(function(){//processing data from the server});

它将如何运作?或者有没有其他选择可以得到我想要的结果

【问题讨论】:

    标签: javascript jquery ajax document-ready .when


    【解决方案1】:

    尝试使用:$( document ).ajaxComplete(function() {}

    【讨论】:

      【解决方案2】:

      不使用异步辅助库, 您可以使用一些标志和辅助函数,虽然不是最优雅的,但它可以工作

      var docReady = false;
      var responseReady = false;
      var tryEvaluateResponse = function() { 
          if(docReady && responseReady) {/*processing data from the server*/}
      };
      $(document).ready(function() {
          docReady = true;
          tryEvaluateResponse();
      });
      $.ajax(/*some request*/)).done(function() {
          responseReady = true; 
          tryEvaluateResponse()
      });
      

      【讨论】:

        【解决方案3】:

        不,这不起作用,因为$(document).ready() 不会返回承诺。但是你可以这样做

        var request = $.ajax(/*some request*/);
        $(document).ready(function() {
            request.done(function(){
                //processing data from the server
            });
        });
        

        【讨论】:

          最近更新 更多