JSON результат ничто - PullRequest
       3

JSON результат ничто

3 голосов
/ 20 февраля 2012

Я использую этот код для доступа к моему серверу (MVC), и это прекрасно работает. В результате "data" ({"Id": 30, "Description": "Samples Photos", "Name": "First Galery"}) я пытаюсь получить свойство data.Name, и это просто ничего не возвращает, что является проблема в этом коде?

JavaScript

 $(function () {
        $('#UserGaleries_').change(function () {
            try {

                if ($(this).val() == -1) {

                    $('#NameGaleriesEdit').val('');
                    $('#DescriptionGaleriesEdit').val('');

                }
                else {
                    $.post('/UserGaleries/ChangeCategorie',
                        { selectedID: $(this).val() },
                        function (data) {
                            alert(data.Name); //Nothing
                            $('#NameGaleriesEdit').val(data.name);
                            $('#DescriptionGaleriesEdit').val('asdf');

                        });
                }
            } catch (e) {
                alert(e);
            }

        });
    });

MVC

[Serializable]
public class ResponsetModel
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string Name { get; set; }
}

public JsonResult ChangeCategorie(int selectedID)
{
    DbLayer.UserGaleriesManager uc = new DbLayer.UserGaleriesManager();
    DbLayer.Models.UsersGalery cat = uc.GetGaleriesById(selectedID);

    ResponsetModel retValue = new ResponsetModel()
    { Id = cat.Id, Name = cat.Title, Description = cat.Description };

    JsonResult oView = Json(retValue, "text/plain", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
    return oView;
}

Ответы [ 4 ]

3 голосов
/ 20 февраля 2012

Когда вы используете метод post() без указания ожидаемого типа контента, data будет просто строкой, содержащей JSON (в отличие от объекта JavaScript). Сделайте alert(data), чтобы проверить это.

Перепишите этот пост как

$.ajax({
    url:'/UserGaleries/ChangeCategorie',
    data:{ selectedID: $(this).val() },
    method:"POST",
    dataType:"json",
    success:function (data) {
        alert(data.Name);
    }
});

В качестве альтернативы вы можете использовать $.getJSON(), но я не уверен, что вы сможете заставить его выполнить запрос POST.

2 голосов
/ 20 февраля 2012

Можете ли вы попробовать установить dataType в $ .post () на "json".Посмотрите пример в [документации]. 1

Это также data.Name не data.name.

Примерно так:

$.post('/UserGaleries/ChangeCategorie',
              { selectedID: $(this).val() },
              function (data) {
                            alert(data.Name);
                            $('#NameGaleriesEdit').val(data.Name);
                            $('#DescriptionGaleriesEdit').val('asdf');

              }, "json");

Важная рекомендация: используйте Firebug , чтобы проверить точный ответ сервера приложений.

1 голос
/ 20 февраля 2012

Вы также можете проанализировать данные JSON после их возврата, используя JSON.parse(result).

0 голосов
/ 20 февраля 2012

Попробуйте использовать другой способ доступа к данным. Использовать данные ["Имя"]

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