подготовить JSON-объект для передачи контроллера - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть дерево, которое имеет HTML-структуру ul li.

В каждом li есть диапазон, содержащий имя узла дерева.

Я должен сделать объект json после прочтения дерева, таким образом он должен выглядеть как-то

        this.orgStructureId = null; 
        this.name = null;
        this.nodeList = null; 
        this.parent = null;
        this.list = null;

Я не уверен, что это будет структура, но что-то похожее. Так как я могу сделать этот объект, вам нужны дополнительные данные для создания объекта json.

http://i.stack.imgur.com/9itqx.jpg Снимок образца дерева

Ответы [ 2 ]

0 голосов
/ 21 декабря 2010

Дерево генерируется на сервере

Если ваше дерево генерируется на стороне сервера, вы также можете добавить его строку JSON в ваш HTML и использовать эти подготовленные данные JSON вместо создания на стороне клиента ...

<ul id="TreeRoot" data="{ name: 'Some name', ... }">
    <li>...</li>
    ...
</ul>

Тогда просто позвоните

var data = $.parseJSON($("#TreeRoot").attr("data"));

и вы получите данные JSON для отправки на сервер. Но будет еще одно препятствие ... передача этих данных в действие контроллера.

Я предлагаю вам прочитать эту запись в блоге об отправке данных JSON , которая сделает вашу жизнь еще проще ...

Дерево генерируется на клиенте

В случае, если ваше дерево будет создано / отредактировано на клиенте пользователями, у вас не будет другого выбора, кроме как:

  • Обход элементов DOM ваших данных иерархии и генерирование JSON
  • генерирует данные JSON, пока пользователь создает дерево и готовит его на ходу и использует конечный результат

Я бы, наверное, пошел со вторым, потому что вы все равно будете манипулировать данными. Так почему бы не сгенерировать узлы HTML и не заполнить переменные.

0 голосов
/ 20 декабря 2010
var json = {};
$('li').each(function(){
    json[this.innerHTML] = null;
})

Тогда вам просто нужно сериализовать его

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