Php 从ajax查询返回的数组看起来正常,但其器官显示不正确
我将地图视口边界的坐标传递给服务器,服务器返回数据库中该区域的所有坐标,作为jsoned数组。Php 从ajax查询返回的数组看起来正常,但其器官显示不正确,php,ajax,jquery,Php,Ajax,Jquery,我将地图视口边界的坐标传递给服务器,服务器返回数据库中该区域的所有坐标,作为jsoned数组。 当我不使用ajax并且发送硬编码数字而不是参数时,它工作正常: <script type="text/javascript"> var coordinatesMap = <?php global $wpdb; $sql = "SELECT user_id, lat, lng FROM coordinates WHERE lat>30 and lat<50
当我不使用ajax并且发送硬编码数字而不是参数时,它工作正常:
<script type="text/javascript">
var coordinatesMap =
<?php
global $wpdb;
$sql = "SELECT user_id, lat, lng FROM coordinates WHERE lat>30 and lat<50 and lng>-80 and lng<20";
$rows = $wpdb->get_results($sql, OBJECT_K);
if (is_array($rows)) {
echo json_encode($rows);
} else {
echo '{}';
}
?>;
alert(coordinatesMap);
for (var id in coordinatesMap)
{
if (coordinatesMap.hasOwnProperty(id))
{
alert(id);
alert(coordinatesMap[id].lat);
alert(coordinatesMap[id].lng);
}
}
</script>
PHP脚本:
<?php
global $wpdb;
$sql = "SELECT user_id, lat, lng FROM coordinates WHERE lat>".$_POST["southWestLat"]." and lat<".$_POST["northEastLat"]." and lng>".$_POST["southWestLng"]." and lng<".$_POST["northEastLng"];
$rows = $wpdb->get_results($sql, OBJECT_K);
if (is_array($rows)) {
echo json_encode($rows);
} else {
echo "failure";
}
?>
这次警报(CoordinateMap)
给出了一个很好的数组-{“177”:{“user_id”:“177”,“lat”:“40.0583238”,“lng”:“-74.4056612”},“178”:{“user_id”:“178”,“lat”:“40.7143528”,“lng”:“-74.0059731”}
但我真正感兴趣的是以下警报,它们在无限循环中给出无效值:`0,未定义,未定义,1,未定义,未定义,2,等等。
你能说出发生了什么吗?在javascript中,如果CoordinateMap是json编码的,那么你所需要的就是解析它 使用 还有,有一个 数据类型:AJAX调用中的“json”
我希望这将解决javascript中的问题,如果CoordinateMap是json编码的,那么您所需要的就是解析它 使用 还有,有一个 数据类型:AJAX调用中的“json” 我希望这将解决您的问题尝试在ajax请求中添加“dataType:json”,如
$.ajax({
type: "POST",
url: "markers.php",
dataType: "json",
data: ({'southWestLat' : southWestLat , 'southWestLng' : southWestLng , 'northEastLat' : northEastLat , 'northEastLng' : northEastLng}),
success: function(coordinatesMap){
alert( coordinatesMap );
for (var id in coordinatesMap)
{
if (coordinatesMap.hasOwnProperty(id))
{
alert(id);
alert(coordinatesMap[id].lat);
alert(coordinatesMap[id].lng);
}
}
}
});
尝试将“dataType:json”添加到ajax请求中,如
$.ajax({
type: "POST",
url: "markers.php",
dataType: "json",
data: ({'southWestLat' : southWestLat , 'southWestLng' : southWestLng , 'northEastLat' : northEastLat , 'northEastLng' : northEastLng}),
success: function(coordinatesMap){
alert( coordinatesMap );
for (var id in coordinatesMap)
{
if (coordinatesMap.hasOwnProperty(id))
{
alert(id);
alert(coordinatesMap[id].lat);
alert(coordinatesMap[id].lng);
}
}
}
});
您可以告诉
$.ajax
希望参数中包含JSON数据,宽度:dataType:“JSON”
$.ajax({
type: "POST",
// ...
dataType: "json"
});
您可以告诉
$.ajax
希望参数中包含JSON数据,宽度:dataType:“JSON”
$.ajax({
type: "POST",
// ...
dataType: "json"
});
数据类型:“json”
足以完成任务。谢谢数据类型:“json”
足以完成任务。谢谢