Я передаю координаты границ области просмотра карты на сервер, который возвращает все координаты в БД, которые находятся в этой области, в виде массива 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>
Единственная странная вещь в том, что 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, 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";
}
?>
На этот раз alert(coordinatesMap);
дает хороший массив - {"177":{"user_id":"177","lat":"40.0583238","lng":"-74.4056612"},"178":{"user_id":"178","lat":"40.7143528","lng":"-74.0059731"}}
Но следующие предупреждения, которые мне действительно интересны, дают недопустимые значения и бесконечный цикл: `0, undefined, не определено, 1, не определено, не определено, 2 и т. д ...
Можете ли вы сказать, что происходит?