我正在从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>
答案 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);
}
});
我要快速测试一下,以确保我把一切都做对了 编辑:好的,我测试过它,它有效。