Deferred.done回调在done函数中不起作用

时间:2012-06-04 14:34:50

标签: jquery

我一直试图让这项工作成为现在,我的最后一次尝试。

我很抱歉以类似的目标发布不同的问题。

我只是想以最好的方式解决这个问题。

这是事情;我在另一个页面中有一些数据要在初始化函数中使用。

这里的一位成员建议我使用deferred.done。

部分有效。我的其他页面中的数据已加载,如果我在初始化函数中有警报(MapData); ,我可以显示它。

但是当我尝试在初始化函数中使用该数据进行实际工作时,我得到 MapData.users未定义错误。

我没有得到它,因为当我装入警报框时看起来很好。

请建议!

    $(function CheckinMap() {
        $.when($.ajax({
            type: "GET",
            url: "content/home/index.cs.asp?Process=ViewCheckinMap"
        })).done(      function initialize(data) {
            var MapData = data;
            var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);
            var map = new google.maps.Map(document.getElementById('checkinmap'), {
              zoom: 2,
              center: center,
              mapTypeId: google.maps.MapTypeId.ROADMAP,
              maxZoom: 4
            });
            var markers = [];
            for (var i = 0; i < MapData.users.length; i++) {
              var location = MapData.users[i];
              var latLng = new google.maps.LatLng(location.latitude,
                  location.longitude);
              var marker = new google.maps.Marker({
                position: latLng
              });
              markers.push(marker);
            }
            var markerCluster = new MarkerClusterer(map, markers);
        });
    });

这是我需要在初始化函数中使用的数据。

{
  "users": [
    {
      "latitude": "48.405163",
      "longitude": "2.684659"
    },
    {
      "latitude": "43.7347242529278",
      "longitude": "7.42198348045349"
    }
  ]
};

1 个答案:

答案 0 :(得分:0)

您尚未在dataType: 'json'电话中指定$.ajax();这可能导致您的data成为原始文本JSON响应,而不是解码对象。