2014-01-28 3 views
1

데이터를 표시하도록 설정된 전단지 맵의 인스턴스가있는 ASP.NET 웹 사이트가 있습니다. drop 이벤트는 jQuery를 통해 변경되는 fire 이벤트에 대해 드롭 다운 값을 가져 와서 서버에서 새 데이터를 검색하는 웹 서비스로 전달합니다. 이 데이터는 geoJson 데이터이며 문자열 형식으로 반환됩니다. 이 새 데이터를지도에 적용하려고하면 작동하지 않습니다. 여기에 코드가 있는데, 나는 되돌아 오는 것이 정확하다는 것을 알고 div로 출력하고, 그것을 복사하고 수동으로로드하고 잘 작동했다. 지금 내 머리를 찢어.Leaflet.js AJAX에서 레이어 추가

나는 그것이 않는 작동 증명하는 사업부로 수익을 출력하고 있습니다 ...

$("#MainContent_DropDownList1").change(function() { 

    $.ajax({ 

     url: "services/AJAXMapping.asmx/GetNewData", 
     dataType: "text", 
     type: "POST", 
     data: { species: $(this).val() }, 
     error: function (err) { 

      alert("Error: " + err.responseText.toString()) 

     }, 
     success: function (data) { 

      $("#testarea").html(data); 
      geojson.clearLayers(); 

      geojson = L.geoJson((data), { 
       style: choroStyle, 
       onEachFeature: onEachFeature 
      }).addTo(map); 

     } 
    }); 

}); 

답변

0

나는 문제가 당신이 객체에 JSON 문자열을 구문 분석하지 않는 것이라고 생각합니다. 당신이 jQuery를 사용하는 것처럼

geojson = L.geoJson((JSON.parse(data)), { 
    style: choroStyle, 
    onEachFeature: onEachFeature 
}).addTo(map); 

또는 대신 JSON.parse(data) 당신은 $.parseJSON(data)를 사용할 수 있습니다.

또한 ajax 호출의 dataTypejson으로 설정할 수 있지만 div에 geojson 데이터를 출력하려면 데이터 오브젝트를 문자열로 다시 변환해야합니다. JSON.stringify(data)

그래도 문제가 해결되지 않으면 얻은 오류 메시지를 게시하십시오.

+1

네가 맞다. 나는 이것으로 머리카락을 찢어 내고 있었다. 데이터는 웹 서비스에서 Json 문자열로 돌아 왔지만 XML로 래핑되었습니다. 문자열을 XML로 구문 분석 한 다음 내부 문자열을 가져 와서 jQuery 함수를 사용하여 json으로 파싱했습니다. 나는 이것을 다른 사람들에게 도움이 될 수있는 희망으로 일할 때 내일 코드 솔루션으로 업데이트 할 것이다. – user3221940

+0

도움이 된 것을 기쁘게 생각합니다! –

관련 문제