0

我有一个从 JSON 获取信息然后将其插入数组的函数。然后我让函数返回数组。

我希望代码像这样工作:

user = getUserInfo();
console.log(user["fname"]);

function getUserInfo(){
    userArray = new Array();
    var url =  "./php/getUserInfo.php";

    $.getJSON(url, function( data ) {
        userArray["fname"] = data[0].first_name;
        userArray["lname"] = data[0].last_name;
        userArray["username"] = data[0].username;

        console.log(userArray["fname"]);
    });

    return userArray;
}

当我在函数中记录 userArray["fname"] 的值时,它工作得很好。

当我在调用函数后记录 userArray["fname"] 的值时,我得到“未定义”

为什么会这样?

4

3 回答 3

1

getJSON您正在回调之外返回数组。因为调用是异步的,你将无法“返回”传统意义上的数据,但你可以调用另一个方法,并在创建后将数组传递给它。

var user; // initialize global
getUserInfo();

function getUserInfo(){
    userArray = new Array();
    var url =  "./php/getUserInfo.php";

    $.getJSON(url, function( data ) {
        // set fields
        setUserInfo(userArray);
    });
}

function setUserInfo(userArray){
    user = userArray;
}

一系列跟注后,user将投注设置到userArray数组中。

于 2012-11-28T00:13:01.953 回答
0

您的函数在设置其值之前返回 Array。

于 2012-11-28T00:12:55.490 回答
0

您遇到的问题是 AJAX 调用是getJSON()异步发生的(AJAX 中的第一个 A)。

因此,return userArray当您仍在等待服务器对 AJAX 调用的响应时,就会发生这种情况。

您将需要在 .h 的回调函数中处理您想要对用户信息执行的任何操作(即更新页面上的某些元素、更新 javascript 全局范围内的变量等)getJSON

于 2012-11-28T00:15:16.847 回答