[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: передача сложной структуры данных на сервер
3Dinterface
добрый день.

1) меем html приблизительно следующего вида.

<div class="page" id='1'>
здесь содержится всякий html
<div class="column" id='1'>
здесь содержится html
</column>
здесь содержится всякий html
<div class="column" id='2'>
здесь содержится html
</column>
... другие column.
</div>


2) Jquery формирует из html некое подобие xml, вида

<page id='1'>
<column
id='1'>
html
</column>
<column
id='2'>
html
</column>
</page>


это результат передаётся серверу get запросом

2) на сервере специальный парсер разбирает полученные данные на column'ы и сохраняет содержимое каждого column'а в свою строчку таблицы с указанием id, к которой относится column и page в который он входит.
=====================================================

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

Более приятным решением могла бы оказатся утрамбовка данных в многомерный массив(yii-каким то образом такие поддерживает) да хотябы в одномерный(многомрности можно добавить и через смещние индекса) . Однако опять же не приведёт ли html содержимое к невозможности прочитать этот массив, надо пробывать. Такой подход мог бы избавить меня от парсера на сервере.

Чистый xml использовать опять же сложно. Так как у columna в html содержимом может быть div содержащий в себе другой Column или page которые надо обрабатывать отдельно. Иными словами <![CDATA[ тут не панацея, если только отрывать и закрывать её постоянно. Хм дак опять же не будет ли xml движок возвращать содержимое только первого cdata.

иными словами вопрос.
================
как лучше передать на сервер и обработать на сервере содержимое всех column c указанием column id и page. то что находится между column нас не интересует.

Точнее как бы сделали вы.



Спустя 5 минут, 51 секунда (7.08.2011 - 12:58) jetistyum написал(а):
формируешь массив объектов, передаешь их json-ом и на сервере парсишь.
что значит утрамбовка в многомерный массив - понятия не имею..

Спустя 23 минуты, 3 секунды (7.08.2011 - 13:21) 3Dinterface написал(а):
Цитата (jetistyum @ 7.08.2011 - 09:58)
формируешь массив объектов, передаешь их json-ом и на сервере парсишь.


- по моему вся эта трень, будет работать до первых кавычек в html, или прикинь замороченность парсера которому придется считать открытие и закрытие кавычек. А не дай бог кто ошибётся в html и поставит одинарные кавычки. Приводить все кавычки к одному виду рискованно, ибо внутри column может оказатся всё что угодно включая jscript где могут понадобится оба вида кавычек.

но мысль интересная, если подумать можно сделать так.

1) запрещённые символы можно заменить чем нибудь вида [/'] и [/"]
2) передать json'ом на сервер
3) конвертнуть в массив c помощью json decode
4) а уже содержание массива на сервере преобразовать обратно в нормальный вид.

Врод логично рассуждаю )
интересная мысль спасибо.

Спустя 10 минут, 22 секунды (7.08.2011 - 13:32) Nikitian написал(а):
Цитата (3Dinterface @ 7.08.2011 - 13:21)
- по моему вся эта трень, будет работать до первых кавычек в html, или прикинь замороченность парсера которому придется считать открытие и закрытие кавычек. А не дай бог кто ошибётся в html и поставит одинарные кавычки. Приводить все кавычки к одному виду рискованно, ибо внутри column может оказатся всё что угодно включая jscript где могут понадобится оба вида кавычек.

Вот это как раз и ерунда. json экранирует все спец-символы. Т.е. кавычки превращаются в \", бэкслеши в \\ и т.д. При парсинге всё восстанавливается обратно.

Спустя 20 минут, 11 секунд (7.08.2011 - 13:52) 3Dinterface написал(а):
***** не знал про экранирование, хотя можно было уж и предположить.

Думаю json это отлично решение.
Спс.

 ! 

М
Со словарным запасом напряг ?
Winston
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.