我正在尝试使用带有mvc3的jQuery 1.5.1获取jSON响应,而javascript正在默默地崩溃。调试服务器端代码我肯定会将填充的列表传递给响应。
有关评论的一些进一步信息。
因此在萤火虫中返回的响应是:
[{"LocationId":"ASXX0413","LocationName":"Albany, Australia"}]
并且firebug也将其识别为jSON对象。
我的Javascript:
weatherEvents: function () {
jQuery("a#getweather").click(function (event) {
event.preventDefault;
var query = jQuery("#Farm_Weather").val();
if (query === "") {
return;
}
jQuery.getJSON("/Farm/Weather", { location: query }, function (data) {
var items = [];
jQuery.each(data, function (key, val) {
items.push("<li>" + val.LocationId + " : " + val.LocationName + "</li>");
});
jQuery("<ul/>", {
"class": "weather-location-list",
html: items.join("")
}).appendTo("div.weatherdiv");
});
});
}
我的服务器端代码:
[HttpGet]
public JsonResult Weather(string location)
{
string requestUrl = string.Format(
"http://xoap.weather.com/search/search?where={0}",
HttpUtility.UrlEncode(location.Trim()));
XmlDocument xmlDoc = new XmlDocument();
XmlNodeList nodeList = null;
// Place a call to Weather.com and search for this location
xmlDoc.Load(requestUrl);
nodeList = xmlDoc.SelectNodes("/search/loc");
// Cast our nodelist and get a new anonymous type.
var jsonWeather = nodeList.Cast<XmlElement>()
.Select(x => new
{
LocationId = x.GetAttribute("id"),
LocationName = x.InnerText
});
return Json(jsonWeather.ToList(), JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:4)
答案 1 :(得分:0)
通过你的代码,你好像在制作一些树形结构 Ul li并将它与你正在获得的json相加。
您可以发出ajax请求并将json对象作为字符串返回。
U的一些示例代码。
ViewData["JsonStr"] = JsonConvert.SerializeObject(objTree);
//这里objTree是我想要在客户端序列化和解释它的复合词。
objOS = Sys.Serialization.JavaScriptSerializer.deserialize(jsonData)
它的工作可以帮助你。