Как работает JSON? Если я сделаю jquery $ .post с типом возврата json, как будут возвращены данные? - PullRequest
0 голосов
/ 25 июня 2009

Если я сделаю пост из jquery, вот так:

$.post("Row/getRowNames", { currRow: "MyRow", offset: 3 },
        function(rowNames) {
            /* How do I interpret the data to 
        },
"json");

Как мне интерпретировать данные rowNames, которые передаются обратно из метода в контроллере? Мне нужно превратить результат JSON в массив строк, как ...

Вот метод Controller, который получает имена строк:

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult getRowNames(string currRow, int offset)
    {
        return this.Json(_rowRepository.getRowNamesByOffset(currRow, offset));
    }

и getRowNamesByOffset(currRow, offset) возвращает массив строк.

Я действительно не уверен, как работает Json, что он делает с массивом, прежде чем он передает его обратно в javascript? Как javascript должен манипулировать Json для получения необходимых данных?

Ответы [ 5 ]

2 голосов
/ 25 июня 2009

JSON обозначает нотацию объектов JavaScript.

Это означает, что код JSON, возвращаемый веб-сервером, преобразуется в объект с помощью JavaScript. Вы можете использовать JSON-парсер следующим образом:

 var myObject = JSON.parse(myJSONtext);

Затем вы можете ссылаться на все свойства, возвращаемые непосредственно через объект

 alert(myObject.item1);
 alert(myObject.item2);
2 голосов
/ 25 июня 2009

Вам не нужно ничего делать. JSON - это собственное представление объекта Javascript. Просто используйте rowNames в функции, как если бы это был массив, объявленный в Javascript.

Чтобы интерпретатор Javascript анализировал его, используйте функцию eval, передавая результат в качестве аргумента. Это может иметь некоторые последствия для безопасности, если вы получаете данные из ненадежного источника. В этом отношении вы можете использовать некоторые библиотеки Javascript JSON-анализатора для безопасной обработки задачи анализа (поскольку они не будут выполнять возможные операторы Javascript внутри, как это делает eval).

0 голосов
/ 25 июня 2009

JavaScript Object Notation (JSON) возвращается и передается обратному вызову:

function(rowNames) {
    // rowNames is an Array of JavaScript JSON Objects representing a RowName.
    // 
    // Lets iterate over the rowNames.  Let's let the RowName object have 
    // a Title property which we'll alert.
    for (var i = 0; i < rowNames.length; i++) {
        alert(rowNames[i].Title);
    }
}

Итак, в основном следует отметить, что параметр, передаваемый в обратный вызов, является объектом JSON ... в этом случае сериализованный массив RowNames.

Надеюсь, это поможет!

0 голосов
/ 25 июня 2009

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

0 голосов
/ 25 июня 2009

Если вы сомневаетесь в том, что данные возвращаются, отправьте предупреждение () (или console.log (), если запущен Firebug).

Если это объект какого-либо описания, цикл for-in над ним:

for (var i in yourResult) {
    alert(i + " = " yourResult[i]);
}

Это покажет вам структуру того, с чем вы имеете дело.

Если yourResult является строкой JSON и вы хотите превратить ее в JS, попробуйте:

yourResult = eval('(' + yourResult + ')');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...