繁体   English   中英

在 document.ready 之前调用 AJAX

[英]AJAX call before document.ready

我有一个要求,其中 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() {
    });
});

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

使用then()而不是success可能会更好,以确保在$.when.done之前完成任何success发生的事情

请注意, 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");
  });
});

但还要注意,如果所显示的顺序正确,您在注册之前也会触发该事件

这段代码对我有用。 简单地说,我在触发之前定义了“yyyy”事件。

 $(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); } }); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM