Php 从函数返回的assoc数组未定义
我有一个函数,它从JSON获取信息,然后将其插入数组。 然后让函数返回数组 我希望代码能像这样工作:Php 从函数返回的assoc数组未定义,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我有一个函数,它从JSON获取信息,然后将其插入数组。 然后让函数返回数组 我希望代码能像这样工作: user = getUserInfo(); console.log(user["fname"]); function getUserInfo(){ userArray = new Array(); var url = "./php/getUserInfo.php"; $.getJSON(url, function( data ) { userArra
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”]的值时,我得到
“未定义”
为什么会这样 函数在设置数组值之前返回数组。在
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
数组。您遇到的问题是像getJSON()
这样的AJAX调用是异步发生的(AJAX中的第一个A)
因此,当您仍在等待服务器对AJAX调用的响应时,将返回userArray
您需要在getJSON
的回调函数中处理您想要对用户信息执行的任何操作(即更新页面上的某些元素、更新javascript全局范围中的变量等)