将php数组传递给javascript数组

将php数组传递给javascript数组,javascript,php,arrays,Javascript,Php,Arrays,我正在寻找将php数组传递给javascript的最佳方法 我正在制作一个RPG,当他们登录时,我想从数据库返回他们保存的数据,并存储在javascript端的数组中: 要获取数据,我需要: $.getJSON("php/CRUD.php", {"_functionToRun" : ""}, function (returned_data) { game.data.dataArray.push(returned_data.split(" ")); log(

我正在寻找将php数组传递给javascript的最佳方法

我正在制作一个RPG,当他们登录时,我想从数据库返回他们保存的数据,并存储在javascript端的数组中:

要获取数据,我需要:

$.getJSON("php/CRUD.php", {"_functionToRun" : ""},
    function (returned_data) {
        game.data.dataArray.push(returned_data.split(" "));
        log("1: " + game.data.dataArray); //output: `1: 120,mymap2` 
        log("2: " + game.data.dataArray[0]); //output: `2: 120,mymap2`
    }
);
PHP:

1) 这是将一组值放入js数组的最佳方法吗

2) 为什么我不能使用
game.data.dataArray[0]
访问
game.data.dataArray
的特定数据元素

它们给出了相同的输出
1:120,mymap2

        log("1: " + game.data.dataArray);
        log("2: " + game.data.dataArray[0]);
是否应
返回\u data.split(“”)
将返回的字符串拆分为两个数组元素


编辑:好的,我已经做了
echo-json\u-encode($message)
并带引号返回,但对于
game.data.dataArray
game.data.dataArray[0]

1: "120,mymap2" 
2: "120,mymap2" 
我还将函数更改为
$.getJSON


再次改为

    $qry = 
        'SELECT * 
        FROM userstats
        WHERE id_user_fk ="' . $_SESSION['userid'] . '"';

    $result = $mysqli->query($qry) or die(mysqli_error($mysqli));

    while ($row = $result->fetch_assoc()) {
        $array[] =  $row['experience'] . $row['levelname'];
        die(json_encode($array[]));
    }   
JS是:

$.getJSON("php/CRUD.php", {"_functionToRun" : ""},
    function (returned_data) {
        game.data.dataArray.push(returned_data.split(" "));
        log("1: " + game.data.dataArray);
        log("2: " + game.data.dataArray[0]);
    }
);
输出:

Uncaught melonJS: level <br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-...<omitted>...nd 
Uncaught melonJS:level

您需要做的是更改此代码:

while ($row = $result->fetch_assoc()) {
    $message =  $row['experience'] . $row['levelname'];
}
要使其成为数组,请执行以下操作:

while ($row = $result->fetch_assoc()) {
    $message[] =  $row['experience'] . $row['levelname'];
}
因此,
$message
现在成为一个数组。您需要将其输出到客户端。您可以使用以下方法完成此操作:

die(json_encode($message));

原因是,在您的代码中,它将只输出最后一个。

您需要做的是,更改此代码:

while ($row = $result->fetch_assoc()) {
    $message =  $row['experience'] . $row['levelname'];
}
要使其成为数组,请执行以下操作:

while ($row = $result->fetch_assoc()) {
    $message[] =  $row['experience'] . $row['levelname'];
}
因此,
$message
现在成为一个数组。您需要将其输出到客户端。您可以使用以下方法完成此操作:

die(json_encode($message));

原因是,在您的代码中,它将只输出最后一个。

如果您使用
$.getJSON
并提供有效的json,则无需解析任何内容,因此您可以将php更改为:

if ($row = $result->fetch_assoc()) {
    echo json_encode($row);
    exit;    // You're limiting the number of rows to 1, so there is no need to continue
}
还有javascript:

$.getJSON("php/CRUD.php", {"_functionToRun" : ""},
    function (returned_data) {
        // you can push `returned_data` to an array / add it to an object,
        // but then you need to keep track of its index
        log("1: " + returned_data.experience); //output: `1: 120` 
        log("2: " + returned_data.levelname); //output: `2: mymap2`
    }
);

如果使用
$.getJSON
并提供有效的json,则无需解析任何内容,因此可以将php更改为:

if ($row = $result->fetch_assoc()) {
    echo json_encode($row);
    exit;    // You're limiting the number of rows to 1, so there is no need to continue
}
还有javascript:

$.getJSON("php/CRUD.php", {"_functionToRun" : ""},
    function (returned_data) {
        // you can push `returned_data` to an array / add it to an object,
        // but then you need to keep track of its index
        log("1: " + returned_data.experience); //output: `1: 120` 
        log("2: " + returned_data.levelname); //output: `2: mymap2`
    }
);

您应该使用json_encode函数。@hidden_4003请查看更新您发布的php没有输出任何内容,您到底在回显什么?@jeroen请参见上文您应该使用json_encode函数。@hidden_4003请查看更新您发布的php没有输出任何内容,你到底在回应什么?@jeroen请看上面PHP页面的响应是什么?PHP页面的响应是什么?不知道你可以做
返回的数据。体验
,并访问返回数据的属性。这是因为您将它作为JSON返回,js可读对象吗?@Growler更好;即使您使用“normal”
$.ajax()
方法,jQuery也会进行智能猜测并解析json。虽然如果您想正确地执行,可以使用
数据类型:“json”或
$.getJSON
。您只需要确保除了json之外没有其他输出被发送回来(如警告等)。不知道您可以执行
返回的\u数据。体验
,并访问返回数据的属性。这是因为您将它作为JSON返回,js可读对象吗?@Growler更好;即使您使用“normal”
$.ajax()
方法,jQuery也会进行智能猜测并解析json。虽然如果您想正确地执行,可以使用
数据类型:“json”或
$.getJSON
。您只需要确保除了json之外,没有其他输出被发回(如警告等)。