我有一个ASP.NET网站,其中包含一个Leaflet地图的实例,该地图设置为显示数据。我有通过jQuery更改fire事件的下拉列表,这些下拉值依次获取下拉值并将它们传递给Web服务,后者从服务器检索新数据。此数据是geoJson数据,并以字符串的形式返回。尝试将此新数据应用于地图不起作用。这是代码,我知道返回的内容是正确的,我已将其输出到Div,复制并手动加载它并且工作正常。现在把头发撕掉了。
我正在输出一个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 :(得分:0)
我认为问题是你没有将你的json-string解析为一个对象。
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)
如果这不能解决您的问题,请发布您收到的错误消息。