php - 从 jQuery ajax 调用复制数组

标签 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);
?> 

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

最佳答案

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/

相关文章:

Javascript动态创建元素和onclick函数

php - 在 Woocommerce 管理员订单列表中显示自定义状态为 "all"的订单

javascript - 点击下载MP3文件

php - 如何在不使用 Foreach laravel 的情况下删除 key

javascript - 使 .local 解析为 IP 地址和端口 (mdns)

php - 对于业务人员管理,将二进制图像保存在 MySQL 中还是仅保存 url?

php - 帮助创建一个可以连续播放音频文件的脚本,无论长度如何

javascript - 动态地将时间戳转换为不同的时区

javascript - Javascript 的增量机会增加?

javascript - 从 Object.defineProperties() 定义的函数调用中获取 'this'