jquery / js / ajax的回调问题

时间:2010-10-10 22:36:48

标签: javascript jquery ajax callback

UPDATE3和FINAL:求得感谢Evan和meder!

UPDATE2:我应该澄清,我需要调用函数updateFilters (a,b),而不是创建函数。该功能存在于其他地方抱歉混淆。

以下代码无法按预期工作 - udpateFilters(a,b)循环结束前调用for。将异步更改为false可以解决问题,但这似乎不对。此外,无论ajax成功与否,都会调用 updateFilters()。

我做错了什么?

save (updateFilters(a,b));

function save (cb) {
    $.ajax ({
         url:'save.php',
         data:somedata,
         async:true,
         success: function (response) {
             for (var i in response) {}

             if (typeof cb!='undefined') cb;
    });
}

function updateFilters (a,b) {
//do some stuff here
}

解答: 因此,meder建议我更改参数。这是答案的2/3!

save (
    (function (a,b) {
        return function () {
            return updateFilters(a,b);
        }
    })(a,b)
);

现在更改以下内容:

if (typeof cb!='undefined') cb (); //brackets are important!

很高兴去!

2 个答案:

答案 0 :(得分:4)

您正在传递函数的调用,而不是稍后应该调用的函数。如果你想要后者,请这样做:

save (
   (function(a,b){
      return function() {
        return updateFilters(a,b)
      }
   })(a,b)
);

答案 1 :(得分:1)

关于您的更新,您永远不会调用回调。这和做

一样
x; // does nothing

您想要回拨电话:

cb(); // invoke the function