我试图在拖动地图后通过ajax更新搜索结果。 这是我正在使用的代码。
function initMap(){
var locations = [];
var count = 0;
$('.oneListing').each(function(){
locations[count] = {title:$(this).html(),lat: $(this).data('lat'), lng: $(this).data('lng')};
count ++;
})
window.map = new google.maps.Map(document.getElementById('map_canvas'), {
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i]['lat'], locations[i]['lng']),
map: map
});
bounds.extend(marker.position);
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(locations[i]['title']);
infowindow.open(map, marker);
}
})(marker, i));
}
map.fitBounds(bounds);
var listener = google.maps.event.addListener(map, "idle", function () {
map.setZoom(4);
google.maps.event.removeListener(listener);
});
map.addListener('dragend', function() {
var zoom = map.getZoom();
var center = map.getCenter();
updatesearch(center, zoom);
});
}
function updatesearch(center, zoom){
jQuery.ajax({
url: '/searches/update',
type: 'post',
data: {zoom: zoom,center: center},
success: function(data){
alert(data)
}
})
}
在此之后,我收到错误,说TypeError: this is undefined
它在getCenter()函数上发生了。
什么可能导致这种错误,我该怎么做才能避免它。
我正在使用jquery v1.11.1
如果需要其他信息,请告诉我。
只有在我尝试对我的后端进行ajax调用以获取新项目之后才会出现此错误。否则getCenter()返回正确的结果。
答案 0 :(得分:0)
我弄清楚问题是什么。 getCenter()返回的对象不是字符串,这就是为什么在ajax的数据中使用变量后我得到了这个错误。 sollution是在中心变量上调用lat()和lng()函数,然后将其传递给ajax。