JQuery和execute函数中使用的JSON数组值

JSON Array values to use in JQuery and execute function

本文关键字:JSON 数组 execute 函数 JQuery      更新时间:2023-09-26

我正在从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

?>

上面的代码告诉我:

在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>

提前感谢您,非常感谢!

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

例如

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

会吐出

[something][something][something]

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

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

它会吐出

[something,something,soemthing]

相反。

尝试使用header('Content-Type:application/json');在coordinate_array.php 中