2014-01-28 44 views
1

我有一個ASP.NET網站,其中包含一個設置爲顯示數據的Leaflet地圖實例。我有通過jQuery改變火災事件的下拉菜單,這些下拉菜單反過來取下拉值,並將它們傳遞給從服務器檢索新數據的Web服務。這些數據是geoJson數據,並以字符串形式返回。嘗試將這些新數據應用於地圖不起作用。這裏是代碼,我知道什麼是回來是正確的,我已經輸出到一個分區,複製它並手動加載它,它工作正常。現在把我的頭髮撕掉。Leaflet.js從AJAX添加圖層

我輸出返回一個div來證明它的工作原理,它確實...

$("#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字符串的對象。的

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

或替代JSON.parse(data)你可以爲你的使用jQuery使用$.parseJSON(data)

您還可以將您的ajax調用的dataType設置爲json,但如果您仍想將geojson數據輸出到div,則必須將數據對象轉換回字符串。 你可以這樣做JSON.stringify(data)

如果這不能解決你的問題,請發佈你得到的錯誤消息。

+1

是的你是對的,我正在把頭髮撕掉。這些數據是從Web服務以Json字符串的形式返回的,但是它被包裝在XML中。我將字符串解析爲XML,得到內部字符串,然後使用jQuery函數將其解析爲json。明天當我開始工作時,我會用代碼解決方案更新它,希望它可以幫助其他人。 – user3221940

+0

我很高興它幫助! – 2014-01-29 17:33:52