我有一个从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”]的值时,我得到了 “未定义”
为什么会这样?
答案 0 :(得分: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
数组。
答案 1 :(得分:0)
您的函数在设置其值之前返回Array。
答案 2 :(得分:0)
您遇到的问题是像getJSON()
这样的AJAX调用是异步发生的(AJAX中的第一个A)。
因此,当您还在等待服务器响应您的AJAX调用时,return userArray
将会发生。
您需要在getJSON
的回调函数中处理您想要处理的用户信息(即更新页面上的某些元素,更新javascript全局范围内的变量等)。