ajax - 如何从 JQuery getJSON 回调中获取数据

标签 ajax json jquery

我需要从回调函数中获取 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/

相关文章:

javascript - Laravel 4 中的 Ajax 请求

php - 用于连续检查 MYSQL 数据库的 Web Worker AJAX 或 Web 套接字?

javascript - 是否可以将脚本动态加载到引用局部变量的 div 中?

java - Gson - 将 JSON 解析为对象时忽略 json 字段

php - 在 PHP 中编写 MySQL 查询以获取数组组并输出为 JSON

java - 父类选择查询错误+将父/子一起插入: Spring 4 Hibernate ORM

javascript - 我可以使用 JavaScript 事件在元素之间传输数据吗?

javascript - Html 表格行未附加到指定的表格

javascript - Bootstrap 中的 slider /旋转木马,带有 Youtube 视频和另一侧的描述

javascript - jQuery Mobile 代码产生越来越多的行