Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在document.ready之前调用AJAX_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在document.ready之前调用AJAX

Javascript 在document.ready之前调用AJAX,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个要求,在document.ready之前必须进行AJAX调用,AJAX调用的响应将用于更新一些HTML元素 因此,我有如下内容: var ajaxget = $.ajax({ type: 'GET', url:'/xxx/get', success: function(resp) { //logic } }); $(document).ready(function(){ $.when(ajaxget).done(f

我有一个要求,在document.ready之前必须进行AJAX调用,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() {
    });
});
var ajaxget=$.ajax({
键入:“GET”,
url:“/xxx/get”,
成功:功能(resp){
//逻辑
}
});
$(文档).ready(函数(){
$.when(ajaxget).done(函数(resp){
//你懂你的逻辑吗
$(documet).trigger(“yyyy”);
});
});
//以上部分在各页中很常见,并放置在
//下面一个根据页面进入多个位置
$(文档).ready(函数(){
$(文档).on('yyyy',function(){
});
});

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

最好使用
then()
而不是
success
,以确保
success
中发生的任何事情都在
$之前完成。当.done

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

尝试:


但也请注意,如果所示顺序正确,则在注册之前您正在触发该事件。

此代码适用于我。我只是在触发之前定义了“yyy”事件

$(文档).ready(函数(){
$(文档).on(“yyyy”,函数(){
console.log('triggered');
});
$.ajax({
类型:'GET',
url:'some.jsp',//您的url
成功:功能(resp){
//逻辑
$(文档).trigger(“yyyy”);
控制台日志(resp);
}
});
});

为什么“要求”在document.ready之前执行此操作?难道你不能在document.ready中完成它,并让其他一切等待它吗?顺便说一句,不是一个失败的投票者。document.ready确实需要很多时间,我们还需要在第一次调用的基础上进行其他ajax调用。因此,该站点上的体验非常笨拙,这只是一个输入错误,这种行为是间歇性的$(document).on('yyy',function(){//this not get execute});永远不要使用
async:false
。这是一种可怕的做法,不受欢迎。您将在浏览器开发工具控制台中看到警告,使用async false没有任何意义。我更新了代码。我确实无法将其放在上面,因为它可能是特定于页面的!无论您将其存放在何处,请确保在触发“yyyy”事件之前加载该事件。
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");
  });
});