Невозможно получить ответ, используя Jquery.getJSON с mvc3 - PullRequest
2 голосов
/ 16 марта 2011

Я пытаюсь получить ответ jSON, используя jQuery 1.5.1 с mvc3, и JavaScript молча вылетает.Отладка кода на стороне сервера. Я определенно передаю заполненный список ответу.

Дополнительная информация о комментариях.

Ответ, возвращаемый в firebug, таков:

[{"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 ]

4 голосов
/ 16 марта 2011

Ответ оказывается довольно простым .....

Существует известная ошибка с jQuery 1.5.1 и плагином jquery.validate, поставляемым с mvc.

дополнительную информацию можно найти здесь , а обновленный плагин можно найти здесь .

0 голосов
/ 16 марта 2011

По вашему коду кажется, что вы создаете какую-то древовидную структуру с помощью Ul li и добавляете ее тоже как div с полученным вами json.

вы можете сделать запрос ajax и вернуть объект json какstring.

Пример кода для U.

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

// здесь objTree - это мой композит, который я хочу сериализовать и интерпретировать на стороне клиента.

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

это обходной путь, который может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...