从jQuery ajax调用复制数组

时间:2011-11-10 23:05:50

标签: php javascript jquery ajax

我正在尝试在此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);
?> 

问题是我需要两次运行该函数,以便我的测试数组包含一些东西,否则它仍然是未定义的。我该如何解决这个问题?

2 个答案:

答案 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);