2011-09-27 2 views
1

루프를 통과 한 JSON 객체의 목록이 있는데 (jQuery Gmap 플러그인을 사용하여 here을 찾음) 해당 객체에 대한 마커를 만들어지도에 추가합니다.JSON상의 Callstack 오버플로 .each

문제는 각 브라우저에서 내가 호출 스택 오버플로 메시지를 얻고 있다는 것입니다 :

Uncaught RangeError: Maximum call stack size exceede

크롬

, 파이어 폭스에서

Too much recursion

.

이유 또는 수정 방법을 알 수 없습니다.

$('#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); 
      }); 
     }); 
} 

어떤 도움이 크게 감사합니다 :

이 내 코드입니다!

+0

+1에 "overflow"라는 단어를 사용하는 경우 :-) –

+0

JavaScript에서 예외가 발생한 행을 알 수 있습니까? 'addMarkers ($ parseJSON (msg.d)); 또는 다른 장소에 있습니까? http://jsfiddle.net/ –

+0

에서 문제를 복제하지 않으면 디버깅하기가 어렵습니다. jsFiddle (http://jsfiddle.net/Extortioner/jYVFz/)에서 successfuly를 다시 작성했으며 문제는 순간에 발생하는 것 같습니다. gmap plugin에서 addmarker를 호출합니다. – Fverswijver

답변

0

버그가 수정되지 않고 버그 자체가 수정되는 것이 아니라 단지 발견 된 것입니다. 마커를 추가 할 때 경계를 설정해야하며 호출 스택을 오버플로하지 않습니다.