如何使用jQuery从JSON中提取信息
我有一个JSON响应,使用JavascriptSerializer类从我的C#WebMethod格式化。 我目前从我的查询中获得以下JSON:
{"d":"[{\"Lat\":\"51.85036\",\"Long\":\"-8.48901\"},{\"Lat\":\"51.89857\",\"Long\":\"-8.47229\"}]"}
我在下面的代码中遇到了问题,我希望有人可能会对此有所了解。 我似乎无法从返回给我的值中获取信息。 理想情况下,我希望能够读回返回给我的每一行的Lat和Long值。
以下是我目前的情况:
$.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { if (msg.d != '[]') { var lat = ""; var long = ""; $.each(msg.d, function () { lat = this['Lat']; long = this['Long']; }); alert('lat =' + lat + ', long =' + long); } } });
我认为这个问题与JSON的格式有关,但我可能不正确。 任何帮助都会很棒。
谢谢,Rich
发生的事情是你在JSON中的字符串中获得JSON编码。 这是多余的,但有一个解决方案,而不改变您的输出方法。
为了解决这个问题,jQuery有一个JSON解析器( $.parseJSON()
),您可以使用它来解析响应中的字符串。
所以我相信你会这样做:
$.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { if (msg.d != '[]') { var content = $.parseJSON(msg.d); var lat = ""; var long = ""; $.each(content, function () { lat = this['Lat']; long = this['Long']; }); alert('lat =' + lat + ', long =' + long); } } });
看起来您的JSON构建错误:
{"d":"[{\"Lat\":\"51.85036\",\"Long\":\"-8.48901\"},{\"Lat\":\"51.89857\",\"Long\":\"-8.47229\"}]"}
可能应该是:
{"d":[{"Lat":"51.85036","Long":"-8.48901"},{"Lat":"51.89857","Long":"-8.47229"}]}
注意{"d":"..."}
? 看起来你的“d”指向一个字符串,而不是一个数组。
请试试这个:
$.each(msg.d, function () { lat = this['Lat']; long = this['Long']; });
在浏览JSON之后,没有MapLatPosition或MapLongPosition
HTH
我想你需要这样的东西:
$.ajax({ type: "POST", url: "page.aspx/LoadWayPoints", data: "{'args': '" + $('numJourneys').val() + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { $.each(msg.d, function () { var lat = ""; var long = ""; lat = this.Lat; // Lat/Long this is how you called it in your JSON responce long = this.Long; alert('lat =' + lat + ', long =' + long); }); } });
希望能帮助到你
- 另外,正如上面提到的xyld ,看看你的JSON