Javascript在AJAX响应中声明一个全局变量

时间:2016-09-15 17:14:05

标签: javascript php post

发送Ajax发布请求后,我得到一个数组作为响应。我想在另一个函数中使用这个数组,我试图在设置它的值之前声明变量而不将它放在任何函数中。

var their_Info = [];
    $.ajax({
            url: "My PHP url",
            type: "post",
            data: {username:usernames} ,
            success: function (response) {
               their_Info = JSON.parse(response);
            });

如果我想在一个单独的函数中使用his_Info,我将得到未定义..

以下是php脚本供参考:

<?php
header('Access-Control-Allow-Origin: *');
$usernames = $_POST['username']; 
//$ids = join("','",$usernames); 
$link = mysqli_connect("localhost", "root", "vKukRKWZRE", "table");
$acc_Info = array();
foreach ($usernames as $value) {
    $query = "SELECT * FROM users WHERE username = '$value'";
    $show = mysqli_query($link, $query) or die("Error");
    while ($row = mysqli_fetch_array($show)) {
        array_push($acc_Info, explode(',', $row['wear']));
    }
}
echo json_encode($acc_Info);
?>

2 个答案:

答案 0 :(得分:0)

如果您在AJAX完成之前尝试使用their_Info,它显然会返回undefined,因为AJAX是异步的。

可能的解决方案

使用数据作为参数在success内调用您的函数。这样,只有在AJAX完成后才会使用响应

答案 1 :(得分:0)

尽管对处理回调的正确方法有评论,但您可以使用window.their_info在全局范围内设置their_info变量。不过真的不推荐。