【发布时间】:2014-06-11 21:45:51
【问题描述】:
我正在寻找将 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:
$qry =
'SELECT *
FROM userstats
WHERE id_user_fk ="' . $_SESSION['userid'] . '"
LIMIT 1';
$result = $mysqli->query($qry) or die(mysqli_error($mysqli));
while ($row = $result->fetch_assoc()) {
$message = $row['experience'] . $row['levelname'];
}
echo json_encode($message);
1) 这是将一组值放入 js 数组的最佳方式吗?
2) 为什么我不能使用game.data.dataArray[0] 访问game.data.dataArray 的某个数据元素。
这些输出与1: 120,mymap2 相同
log("1: " + game.data.dataArray);
log("2: " + game.data.dataArray[0]);
应该returned_data.split(" ")将返回的字符串拆分成两个数组元素吗?
编辑:好的,我已经完成了 echo json_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
【问题讨论】:
-
你应该使用json_encode函数。
-
@hidden_4003 请查看更新
-
你发布的php没有输出任何东西,你到底在呼应什么?
-
@jeroen 请看上面
标签: javascript php arrays