我正在从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>
提前谢谢你,非常感谢!
答案 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中