我需要从回调函数中获取 JSON 对象数据,以便稍后可以在页面中处理它,而不是像现在一样在回调中处理它。这对于其他人来说一定是显而易见的,因为我看不到任何关于它的文字。谁能告诉我该怎么做?
这是我的代码:
<script type="text/javascript" src="/site_media/js/jstree/_lib/jquery.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var myOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
return map;
}
function add_marker(map, lat, long) {
var marker_image='/site_media/images/map_marker.png';
var myLatlng = new google.maps.LatLng(lat,long);
title='title';
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:title,
icon:marker_image
});
//map.panTo(myLatlng);
}
//window.onload=initialize();
setTimeout('map=initialize();',2000);
$.getJSON("/ajax/get", function(data) {
$.each(data, function(i,val) {
latitude = val.fields.latitude;
longitude = val.fields.longitude;
add_marker(map, latitude, longitude);
});
});
</script>
<div id="map_canvas" style="width: 500px; height: 300px"></div>
最佳答案
Rich,它实际上比你想象的要简单得多(至少看起来是这样)。我假设你的标记有一个 id 或其他东西。您可能需要调整它以按照您想要的方式工作:
var lastMarkerId; // We'll store the id here, starts as undefined
function refresh_markers () {
$.getJSON("/ajax/get", { marker_id: lastMarkerId }, function(data) {
$.each(data, function(i,val) {
latitude = val.fields.latitude;
longitude = val.fields.longitude;
add_marker(map, latitude, longitude);
});
if (data.length) {
// grab the last item and store its ID
lastMarkerId = data.pop().id;
}
});
}
然后在您的服务器上执行类似以下操作:“如果 marker_id
有值,则查找该 id 之后的每个标记,否则返回全部”。
记住!每个标记都需要一个 id 才能使我的代码正常工作:
[{id:1, fields: {latitude: "..", longitude: ".." }}]
关于ajax - 如何从 JQuery getJSON 回调中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3689700/