在document.ready之前调用AJAX

时间:2017-10-29 19:17:10

标签: javascript jquery ajax

我有一个要求,在AJAX调用必须在document.ready之前发生,并且来自AJAX调用的响应将用于更新一些HTML元素。

所以我有类似下面的内容:

var ajaxget = $.ajax({
      type: 'GET',
      url:'/xxx/get',
      success: function(resp) {
       //logic
      }
});

$(document).ready(function(){
     $.when(ajaxget).done(function(resp) {
        //do ur logic
         $(documet).trigger("yyyy");
     });
});
//the above part is common across pages and placed in the <head>

//below one goes into multiple places based on the pages

$(document).ready(function(){
    $(document).on('yyyy', function() {
    });
});

问题是触发事件&#34; yyyy&#34;不会在IE中执行,也会在其他浏览器上间歇执行。请帮忙!

2 个答案:

答案 0 :(得分:1)

最好使用then()代替success,以确保success中发生的任何事情都在$.when.done之前完成

请注意,success不是承诺链的一部分

尝试:

var ajaxget = $.ajax({
  type: 'GET',
  url: '/xxx/get'
}).then(function(resp) {
  //logic
  return resp;
});

$(document).ready(function() {
  ajaxget.then(function(resp) {
    //do ur logic
    $(documet).trigger("yyyy");
  });
});

但是请注意,如果显示的订单正确

,您也会在注册之前触发事件

答案 1 :(得分:0)

此代码适用于我。只是我定义了&#34; yyyy&#34;触发前的事件。

&#13;
&#13;
$(document).ready(function () {
                $(document).on("yyyy", function () {
                    console.log('triggered');
                });
                $.ajax({
                    type:'GET',
                    url:'some.jsp',//your url
                    success:function(resp){
                        //logic
                        $(document).trigger("yyyy");
                        console.log(resp);
                    }
                });
            });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;