从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\"
});
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...