我正在尝试在此 Javascript 函数中复制一个 JSON 数组:
var test = new array();
function showUser(user, pass, remember)
{
$.getJSON("login.php", { username : user, password : pass, check : remember }, function(data){
for (var i = 0; i<data.length; i++)
{
alert(data[i]);
test[i] = data[i];
}
});
alert(test[0]);
}
这是它链接到的 PHP 文件;
<?php
$arr = array("test1", "test2", "test3");
echo json_encode($arr);
?>
问题是我需要运行函数两次,以便我的测试数组包含一些东西,否则它会保持未定义状态。我该如何解决这个问题?
最佳答案
var test = new array();
function showUser(user, pass, remember)
{
$.getJSON("login.php", { username : user, password : pass, check : remember }, function(data){
for (i in data)
{
test[i] = data[i];
}
alert(test[0]);
});
}
正如 Šime Vidas 所述,您的警报在回调函数之外,因此它在通过 AJAX 调用返回数据之前被调用。这就是为什么第二次点击您的按钮会发出您预期的警报,因为它在回调函数运行后就存在了。
虽然,为什么不直接将 test
设置为 data
的值,而不是遍历 data
变量:
test = data;
关于php - 从 jQuery ajax 调用复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087653/