我正在尝试在此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);
?>
问题是我需要两次运行该函数,以便我的测试数组包含一些东西,否则它仍然是未定义的。我该如何解决这个问题?
答案 0 :(得分:3)
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]);
});
}
正如ŠimeVidas所述,您的警报在回调函数之外,因此在通过您的AJAX调用返回数据之前调用它。这就是为什么第二次单击按钮会提醒您的预期,因为它在回调函数运行后存在。
虽然不是循环使用data
变量,为什么不将test
设置为data
的值:
test = data;
答案 1 :(得分:1)
复制数组的简便方法是使用slice
:
test = data.slice(0);