JQuery没有读取JSON数组值

时间:2014-09-30 21:22:13

标签: javascript php jquery mysql json

我正在从MySQL数据库中读取X,Y坐标。

2个文件(我可以根据需要发布连接文件):coordinate_array和map.php

coordinate_array:我正在创建一个多维数组,所以我可以使用json_encode($ desk)。我只需要JS / Jqueryt部分的x,y值。

更新的PHP代码和JQuery CODE ..仍然不起作用!

    <?php
          include 'db_conn.php';

    header('Content-Type: application/json');

    $coordinate_sql = "SELECT x_coord, y_coord FROM coordinates";

    $result = mysqli_query($conn,$coordinate_sql);

    //see if query is good
    if($result === false) {
        die(mysqli_error()); 
    }

    //array that will have number of desks in map area
    while($row = mysqli_fetch_assoc($result)){  

        //get desk array count
        $desk[] = array('x' => $row['x_coord'],                                 
                        'y' => $row['y_coord']);
    } //end while loop
          echo json_encode($desk);  //encode array
?>

上面的代码将此作为数组的结果:

[{"x":"20","y":"20"},{"x":"30","y":"30"},{"x":"40","y":"40"},{"x":"50","y":"50"}]

map.php:这是不完全正常工作的部分。我试图通过JQuery从json_encode获取值,但是屏幕上没有输出。

不知道我应该使用哪两个

 <script type="text/javascript" src="jquery-1.11.1.min.js"></script> 
 <script  src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

请在这里寻求帮助

 <canvas id="imageView" width="600" height="500"></canvas>          
 <script type="text/javascript">

                //I have no idea how to get the encoded values
    $.post('coordinate_array.php', {}, function(data) {
    results = JSON.parse(data);
        for(i = 0;i < results.length;i++) {
            Paint(results[i].x, results[i].y);
        }
    });

我想执行此功能

        //function to paint rectangles
        function Paint(x,y)
                {
                var ctx, cv;
                cv = document.getElementById('imageView');
                ctx = cv.getContext('2d');
                ctx.lineWidth = 5;
                ctx.strokeStyle = '#000000';
                //x-axis,y-axis,x-width,y-width
                ctx.strokeRect(x, y, x+100 , y+100); 
                }
            </script>

2 个答案:

答案 0 :(得分:0)

JSON形式定义倾向于将对象(或者,key-associative-array:{})作为任何JSON对象的根,而不是数组({{ 1}})。

将其包装在一个关联对象中:

[]

然后,在JavaScript方面,您只需要获得“$deskOutput = array("coords" => $desk); echo json_encode($deskOutput); //encode array ”即可获得阵列。

就此而言,似乎你在PHP级别的数组结构中加入了不必要的复杂性。怎么样?

each(data.coords,

这将为每个x / y集创建一个对象。我会留给你弄清楚如何相应地简化你的JavaScript。

答案 1 :(得分:0)

首先只需要这样的$ desk:

while($row = mysqli_fetch_assoc($result)){  

    //get desk array count
    $desk[] = array('x' => $row['x_coord'], 'y' => $row['y_coord']);
}
echo json_encode($desk);

并像这样调用php脚本:

$.post('coordinate_array.php', {}, function(data) {
    results = JSON.parse(data);
    for(i = 0;i < results.length;i++) {
        Paint(results[i].x, results[i].y);
    }
});

我要快速测试一下,以确保我把一切都做对了 编辑:好的,我测试过它,它有效。