在完成另一个函数时执行函数,使用ajaxComplete()?

时间:2009-03-21 20:08:26

标签: jquery json asynchronous autocomplete javascript

两个函数需要在Javascript中执行,第二个函数只在第一个函数完成后执行。

第一个使用getJSON填充数组,然后第二个将对其进行操作。

但是,getJSON是异步的,因此它不会暂停执行顺序以使程序正常工作,以便在第二个函数可以执行之前完成加载。如何通过getJSON完成数据加载后,如何使用Jquery的ajaxComplete()或getJSON回调来简单地运行第二个函数。

感谢。


这是代码:

function fetch_ids(user) 
var url = 'http://test.com/ids/' + escape(user) + '.json?callback=?';
// populate array ids[] with JSON data --uid[] array declared globally
$.getJSON(url, function(data) {
for( var i = 0; i < data.length; i++ ) ids[i] = data[i];
});
// test array and run alert
for(i=0;i<uid.length;i++){
for(j=0;j<ids.length;j++){
if(uid[i]==ids[j])
{alert('matched: ' + uid[i]);}
}
}
// finish test
}

2 个答案:

答案 0 :(得分:4)

这不会有用吗?

$.getJSON(url, params, function (jsonData){
  // populate array
  // call 2nd function.
});

最糟糕的情况是,如果您已在其他地方定义了2个功能:

$.getJSON(url, params, function (jsonData){
  firstFunction(jsonData);
  secondFunction(jsonData);
});

答案 1 :(得分:0)

检查此类似帖子...... How to initiate another jQuery .ajax call based on the result from an initial .ajax call?

诀窍是将第二个调用放在第一个调用的成功函数中。