如何解决从ajax查询返回的数组看起来还可以,但其器官未正确显示
|| 我正在将地图视口边界的坐标传递给服务器,该服务器以jsoned数组的形式返回该区域中db中的所有坐标。 当我不使用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>
唯一奇怪的是alert(coordinatesMap);
给出警报[object Object]
。但这不是问题。
其余警报都可以:177、40.058,-74.405、178、40.714,-74.005。
但是在“现实生活”中,我必须将参数传递给服务器,因此我使用ajax是这样的:
Ajax调用:
$.ajax({
type: \"POST\",url: \"markers.php\",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);
}
}
}
});
PHP脚本:
<?php
global $wpdb;
$sql = \"SELECT user_id,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\";
}
?>
这次alert(coordinatesMap);
给出了一个不错的数组-{\"177\":{\"user_id\":\"177\",\"lat\":\"40.0583238\",\"lng\":\"-74.4056612\"},\"178\":{\"user_id\":\"178\",\"lat\":\"40.7143528\",\"lng\":\"-74.0059731\"}}
但是以下警报是我实际上感兴趣的警报,它们给出了无效的值并无限循环:`0,未定义,未定义,1,未定义,未定义,2,等等。
你能说发生什么吗?
解决方法
尝试将\“ 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);
}
}
}
});
, 在javascript中,如果coordinateMap是json编码的,那么您只需解析它
使用
var obj = Jquery.parseJSON(coordinatesMap);
alert(obj.user_id);
拥有它也会很好
您的AJAX调用中的dataType:\“ json \”。
我希望能解决您的问题
, 您可以告诉ѭ9期待JSON数据,宽度:dataType: \"json\"
在参数中。
$.ajax({
type: \"POST\",// ...
dataType: \"json\"
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。