如何在.ajax中调用函数?

时间:2012-06-04 10:21:31

标签: javascript jquery

我有以下代码,我想在这里用以下内容调用初始化函数; google.maps.event.addDomListener(window,'load',initialize);

但是我收到了这个错误;错误:未定义初始化。

这里有什么问题?

$(function CheckinMap() {
        $.ajax({
            type: "GET",
            url: "content/home/index.cs.asp?Process=ViewCheckinMap",
            success:     function initialize(data) {
                var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);

                var map = new google.maps.Map(document.getElementById('map'), {
                  zoom: 2,
                  center: center,
                  mapTypeId: google.maps.MapTypeId.ROADMAP,
                  maxZoom: 4
                });

                var markers = [];
                for (var i = 0; i < data.users.length; i++) {
                  var location = data.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);
            },
            error: function (data) {
                $("#checkinmap").append(data);
            }
        });
    });
google.maps.event.addDomListener(window, 'load', initialize);

2 个答案:

答案 0 :(得分:1)

如果你想使用两个 jQuery success方法和addDomListener第三个参数的函数,那么你必须在定义它时将它存储在某个地方而不是将其直接传递给success

对于您对ajaxaddDomLister的通话,某处也必须在此范围内。

移动function initialize(data),使其显示在当前行1之前。

然后说success: initialize

答案 1 :(得分:0)

您在intialize范围内定义CheckinMap,然后在代码的最后一行尝试在该范围之外使用它。如果你真的需要在两个地方都有它,那么在外面定义它,然后在success属性值中引用它。

function initialize(data) {
    var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 2,
      center: center,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      maxZoom: 4
    });

    var markers = [];
    for (var i = 0; i < data.users.length; i++) {
      var location = data.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);
}

$(function CheckinMap() {
        $.ajax({
            type: "GET",
            url: "content/home/index.cs.asp?Process=ViewCheckinMap",
            success: initialize,
            error: function (data) {
                $("#checkinmap").append(data);
            }
        });
    });
google.maps.event.addDomListener(window, 'load', initialize);