Json не возвращает результат, который доступен в виде массива - PullRequest
0 голосов
/ 17 декабря 2009

У меня проблемы с чтением результата Json из метода контроллера ...

У меня есть этот метод в моем контроллере:

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult GetCurrent()
    {
        IList<string> profile = new List<string>();
        profile.Add("-1");
        profile.Add("Test");
        profile.Add("");

        return this.Json(profile);
    }

И это называется этот пост jquery ajax:

$.post("/Profile/GetCurrent", function(profile) { profileCompleteOpen(profile); }, "json");

и функция javascript, вызываемая для обратного вызова сообщения:

function profileCompleteOpen(profile) {
   alert(profile);
   alert(profile[0]);
}

Результат первого предупреждения показывает массив следующим образом:

[ "- 1", "Тест", ""]

Но результат второго предупреждения показывает это:

[* * тысяча двадцать-один

вместо

-1 * +1027 *

Что я здесь не так делаю ... Я сравнивал это с другим разом, когда я делаю это, и, похоже, это точно так же. Почему он не распознает, что это массив?

Спасибо,
Matt

Ответы [ 3 ]

1 голос
/ 17 декабря 2009

Попробуйте преобразовать данные json в профиле в нужный объект, используя для этого eval ().

Пример:

var profileObject = eval('(' + profile + ')');
0 голосов
/ 17 декабря 2009

Я думаю, что тип profile это строка вместо массива. Зачем? Проверьте параметры метода $.post. Может быть, проблема в этом.

$.post("url", null, function(profile) { ... }, "json");
0 голосов
/ 17 декабря 2009

Хм, я бы делал то, что вы пытаетесь сделать немного по-другому.

Я бы либо вернул полностью определенный объект, а затем использовал бы его свойства;

class MyObj
{
  public string name{get;set;}
}

заполните объект и верните его как объект json. тогда вы можете получить доступ к коду jquery, как к любому другому объекту.

Другим способом может быть return PartialView("MyView", model);

Это вернет частичное представление в виде HTML обратно на вашу страницу, которое вы затем можете добавить в свой HTML.

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