我有这个jQuery函数:
var searchResultsCounter = 0;
function searchPerson(filterText){
//code
$.ajax({
type: "GET",
dataType:"json",
url: "res/main.php",
data: { command : "loadPeople",
filter: filterText },
success: function( people ){
for(var i = 0; i< people.length; i++){
//code
}
searchResultsCounter = people.length;
console.log(searchResultsCounter);
}
});
console.log(searchResultsCounter);
return searchResultsCounter;
}
在第一个控制台日志中,我的searchResultsCoutner
具有良好的值,在第二个日志中,它变为0.为什么会发生这种情况?
答案 0 :(得分:5)
ajax请求是异步执行的,因此尝试更改变量的success
回调函数将在稍后执行。
您的函数只返回0.您必须重写您的代码,它以异步方式工作。一种方法是将回调函数作为参数传递给searchPerson
。
答案 1 :(得分:1)
从searchPerson()函数返回promise接口($ .ajax)并在解决延迟后使用返回的结果:
function searchPerson(filterText) {
//code
return $.ajax({
type: "GET",
dataType: "json",
url: "res/main.php",
data: {
command: "loadPeople",
filter: filterText
}
});
}
$.when(searchPerson(filterText)).done(function (data) {
/*SUCCESS*/
});