在我的函数中,变量变得不确定

时间:2013-07-27 11:59:21

标签: javascript jquery variables

我有这个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.为什么会发生这种情况?

2 个答案:

答案 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*/
});