Php 从ajax查询返回的数组看起来正常,但其器官显示不正确

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

我将地图视口边界的坐标传递给服务器,服务器返回数据库中该区域的所有坐标,作为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 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”
足以完成任务。谢谢