要在JQuery和执行函数中使用的JSON数组值

时间:2014-09-30 17:58:37

标签: javascript php jquery mysql json

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

2个文件,假装连接在那里:coordinate_array和map.php

在此更新在coordinate_array中:我正在创建一个多维数组,因此我可以使用json_encode($ desk)。我只需要Javascript部分的x,y值。

 <?php
      include 'db_conn.php';

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

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

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

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

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

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

&GT;

上面的代码给了我这个:

[[{ “×”: “20”},{ “Y”: “20”}],[{ “×”: “30”},{ “Y”: “30”}],[{ “×”: “40”},{ “Y”: “40”}],[{ “×”: “50”},{ “Y”: “50”}]]

在map.php中:我试图通过使用JQuery来获取这些值。我想获取值并运行一个循环来执行我的Paint函数,该函数将继续为表中的每一行绘制矩形。我是JSON和JQuery的新手,并开始使用它。

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

需要帮助

                //I have no idea how to get the encoded values
    $(document).ready(function(){
    $.getJSON('coordinate_array.php', function(data)){
    $.each(data, function(k,v){
     Paint(v[0].x, v[1].y);
    });//end each
    });//end get json
     });//end rdy func

我想执行此功能

        //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 :(得分:1)

你做错了json。它应该在您的数据库提取循环完成后进行编码。由于您在循环中进行编码,因此您将吐出多个独立的JSON编码字符串,这将被视为接收端的语法错误。

e.g。

while($something) {
   echo json_encode($some_array);
}

将吐出

[something][something][something]

三个独立的json编码阵列相互挤压。你想要的是更像这样的东西:

while($something) {
   build_array();
}
echo json_encode($array);

会吐出来的

[something,something,soemthing]

代替。

答案 1 :(得分:0)

尝试使用 标题(&#39; Content-Type:application / json&#39;); 在coordinate_array.php中