使用$ .getJSON将JSON对象从数据库传递给JS

时间:2015-06-11 08:54:54

标签: javascript php ajax json

我正在尝试使用$ .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;
        });
    });
});

2 个答案:

答案 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);