在jQuery.ajax()成功执行之前调用的其他函数

时间:2012-01-20 18:46:38

标签: jquery

我希望通过jQuery.ajax()获取一些数据,通过成功保存这些数据,然后使用它。 功能的顺序是:

$.ajax({
        url: this.html_url,
        cache: false,
        success: function(data){
              //Here the data is saved via HTML5 localStorage
        }
    });

doSomething();//The stored data is used in this function.

问题是在成功函数保存下载数据之前调用doSomething()。因此,数据在被保存之前就被使用了。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

假设我理解你的意思。为什么不在doSomething()回调中拨打success

$.ajax({
    url: this.html_url,
    cache: false,
    success: function(data){
          //Here the data is saved via HTML5 localStorage
          doSomething();//The stored data is used in this function.
    }
});

答案 1 :(得分:1)

这是因为ajax调用了asynch。通过async : false在{ajax调用中设置default true

<强> DOCUMENTATION

$.ajax({    
   url: this.html_url,
   cache: false,
   async : false, // added this
   success: function(data){
     //Here the data is saved via HTML5 localStorage
   }
});

doSomething

中调用success的第二种方法
success: function(data){
   //Here the data is saved via HTML5 localStorage
    doSomething()'
}

答案 2 :(得分:0)

那是因为AJAX调用是异步的。这意味着您的脚本在继续之前不会等待它们完成(很像setTimeout())。

只需在成功回调中包含您的doSomething()功能。

答案 3 :(得分:0)

   $.ajax({
        url: this.html_url,
        cache: false,
        success: function(data){
              //Here the data is saved via HTML5 localStorage
        },
        async:false,
    });
    doSomething();