我正在尝试使用$ .getJSON函数将我从数据库通过php文件访问的json对象传递给JS。我正在使用json_encode()函数。正在检索存储在数据库中的json对象。但是,$ .getJSON函数不接受我在php($ arr)中获取的数组。
请帮助。谢谢!
示例代码(php):
onclick="foo('bar');"
JS代码:
<?php
$arr = array();
while($row = mysqli_fetch_array($result)){
$attributes = $row['attributes'];
array_push($arr, $attributes);
}
$newArray = json_encode($arr);
echo $newArray;
?>
以下是我打印$ newArray时的输出。
var i, j;
var dataset = [];
for (i=0; i < 17; i++){
dataset[i] = [];
for (j=0; j < 17; j++){
dataset[i][j] = "";
}
}
$(document).ready(function(){
$.getJSON('getData.php', function(data) {
$.each(data, function(key, val) {
var x = val.posX,
y = val.posY;
});
});
});
答案 0 :(得分:2)
这里的基本问题是您将JSON存储在数据库中,而不是设置一个数据库来保存您正在处理的数据。
即。您的数据库表应包含position,posX等列
因此,当您将数据返回到浏览器时,您将返回一个JSON数组字符串,其中每个字符串本身就是一个JSON文本。
要解决这个问题,你必须在循环遍历时解析每个字符串。
$.each(data, function(key, val) {
val = JSON.parse(val);
var x = val.posX,
更好的方法是在返回之前解码服务器上的每个字符串。
最好的方法是规范化您的数据库,以便获得实际可以查询的数据。
答案 1 :(得分:-1)
尝试在json_encode
之后使用echo stripslashes($newArray);