【问题标题】:Callstack overflow on JSON .eachJSON .each 上的调用堆栈溢出
【发布时间】:2011-11-26 01:20:54
【问题描述】:

我有一个循环遍历的 JSON 对象列表,然后(使用找到 here 的 jQuery Gmap 插件)为该对象创建标记并将其添加到地图中。

问题是在每个浏览器中我都会收到调用堆栈溢出消息:

未捕获的 RangeError:超过最大调用堆栈大小

在 Chrome 中,并且

递归太多

在 Firefox 中。

我不知道为什么或如何解决它。

这是我的代码:

$('#map_canvas').gmap().bind('init', function (evt, map) {
        var webMethod = '<%= NavigationHelper.GetFullUrl("Components/Services/storelocatorservice.asmx/GetStoresByAddress") %>';
        var webParam = '{ "address": "Vaartkom 31/9 3000 Leuven", "language": "<%= Sitecore.Context.Language.CultureInfo.TwoLetterISOLanguageName %>", "radius": "15" }';

        $.ajax({
            type: "POST",
            url: webMethod,
            data: webParam,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                //$('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map));
                addMarkers($.parseJSON(msg.d));
            }
        });
});

function addMarkers(json) {
        $.each(json, function (i, m) {
            $('#map_canvas').gmap('addMarker', {
                'title': m.Name,
                'position': new google.maps.LatLng(m.Lat, m.Long),
                'name': m.Name,
                'zipcode': m.ZipCode,
                'id': m.LocationId,
                'bounds': true
            }).click(function () {
                $('#map_canvas').gmap('openInfoWindow', {
                    'content': '<h3>' + m.Name + '</h3><p>' + m.ZipCode + '</p><a onclick="getDirections(\'' + m.Id + '\')">Route</a>'
                }, this);
            });
        });
}

非常感谢任何帮助!

【问题讨论】:

  • +1 用于在标题中使用“溢出”一词 :-)
  • 您知道异常发生在 JavaScript 中的哪一行吗?是在addMarkers($.parseJSON(msg.d)); 还是其他地方?除非您设法在jsfiddle.net 上复制问题,否则很难调试
  • 我已经成功地在 jsFiddle (jsfiddle.net/Extortioner/jYVFz) 上重新创建了这个,问题似乎发生在我从 gmap 插件调用 addmarker 的那一刻。

标签: javascript jquery google-maps stack-overflow callstack


【解决方案1】:

我找到了一个修复方法,并不是说它修复了错误本身,它只是防止它发生: 我必须设置 bounds: false 添加标记时,它不会溢出调用堆栈。

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多