无法使用带有mvc3的Jquery.getJSON获得响应

时间:2011-03-16 09:39:12

标签: jquery json asp.net-mvc-3

我正在尝试使用带有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);
    }

2 个答案:

答案 0 :(得分:4)

答案结果很简单......

jQuery 1.5.1中存在一个已知错误,mvc附带了jquery.validate插件。

可以找到更多信息here,可以找到更新的插件here

答案 1 :(得分:0)

通过你的代码,你好像在制作一些树形结构 Ul li并将它与你正在获得的json相加。

您可以发出ajax请求并将json对象作为字符串返回。

U的一些示例代码。

ViewData["JsonStr"] = JsonConvert.SerializeObject(objTree);

//这里objTree是我想要在客户端序列化和解释它的复合词。

objOS = Sys.Serialization.JavaScriptSerializer.deserialize(jsonData)

它的工作可以帮助你。