我正在使用jQuery $ .post来点击PHP页面,该页面以下列格式返回我的标记:
[[' LOCATION1&#39 ;, LAT,LONG,1],[' LOCATION2',LAT,LONG,2]]
我认为问题在于javascript将此视为字符串而不是数组。这是我的jQuery。
$.post("getdata.php")
.done(function(locations) {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
center: new google.maps.LatLng(LAT, LONG),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
});
我尝试手动将locations变量设置为我的PHP结果,并且它可以工作,这就是为什么我认为它是简单的AJAX变量如何进入,然后它是如何尝试解析它。在此先感谢。
编辑:我最终改变了点的格式,比如位置; Lat; Long | Location2; Lat; Long |
然后我分开了&#39; |&#39;然后拆分&#39;;&#39;创建2个数组来解析。非常丑陋的解决方案,但它最终工作。
答案 0 :(得分:0)
尝试使用console.log()检查响应,或者在迭代之前直接执行jQuery.parseJSON。
$.post("getdata.php")
.done(function(_locations) {
locations = jQuery.parseJSON(_locations);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
center: new google.maps.LatLng(LAT, LONG),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
});