Результаты JSON из MVC3 не определены - PullRequest
1 голос
/ 23 октября 2011

Я пытаюсь взять результаты JSON из действия MVC3 и вставить его в строку таблицы, но все значения не определены.Как правильно проанализировать результаты JSON из ajax-запроса JQuery?

Это метод действия MVC3

    [HttpPost]
    [Authorize]
    public JsonResult GetImageDetails(int id)
    {
        Image img = db.Images.First(i => i.ID == id);
        return Json(img);
    }

Это JQuery для обработки результатов, когда они возвращают

    $.ajax({
        type: "POST",
        url: "../Controller/GetImageDetails",
        data: "id=" + id,
        dataType: "json",
        success: function (data) {
            $.map(data, function (item) {
                $('#tblImages > tbody > tr:first').before("<tr><td>ID:" + item.ID + "</td><td><img src='" + item.ThumbURL + "' alt='" + item.Name + "'/></td></tr>");
            });
        },
        error: function (obj) {

        }
    })

Результатом являются строки, в которых ничего не определено.Я получаю то же количество строк, что и свойства в возвращаемом мной объекте, так что я уверен, что просто не правильно обработал этот результат JSon.Может кто-нибудь указать мне правильное направление, как справиться с этим результатом JSon, пожалуйста?Также есть ли какие-либо проблемы с поддержкой браузера при предлагаемом подходе?Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 23 октября 2011

Похоже, вы пытаетесь использовать $ .map для одного объекта.Я думаю, что это закончится итерацией по ключам свойств этого объекта.Попробуйте просто получить доступ к свойствам объекта из объекта данных

$.ajax({
        type: "POST",
        url: "../Controller/GetImageDetails",
        data: "id=" + id,
        dataType: "json",
        success: function (data) {
                $('#tblImages > tbody > tr:first').before("<tr><td>ID:" + data.ID + "</td><td><img src='" + data.ThumbURL + "' alt='" + data.Name + "'/></td></tr>");
        },
        error: function (obj) {

        }
    })
0 голосов
/ 23 октября 2011

Вы возвращаете одно изображение из вашего действия, но обрабатываете его как массив на стороне клиента.Зачем?Вы пытались изучить data и посмотреть, что на самом деле в нем?Я удивлен, map() вызов работает вообще.

Также FYI map() предназначен для преобразования элементов данного массива.Если вы не возвращаете значение из своего обратного вызова, то вместо этого следует использовать each().

0 голосов
/ 23 октября 2011

Вы пытались выполнить действия по сравнению с постом?

Например:

[HttpGet]
[Authorize]
public JsonResult GetImageDetails(int id)
{
    Image img = db.Images.First(i => i.ID == id);
    return Json(img, JsonRequestBehavior.AllowGet);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...