|
|
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
На стороне сервера создан массив. Как его преобразовать в JSON формат и отправить клиенту для преобразования с помощью eval? Во всех примерах, которые я нашел, показан статический JSON формат на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 17:12 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
А подробнее? Как с помощью JavaScript работать с JSON? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 22:26 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
Просто приведу текст из книги "Ajax в действии" Паскарелло: Использование JSON-данных Имя для объекта XMLHttpRequest было выбрано не совсем удачно. На самом деле он может принимать не только XML, но и любую текстовую информацию. Для передачи данных Ajax-клиенту очень удобен формат JSON (JavaScript Object Notation), так как он позволяет представить в компактном виде граф объектов JavaScript. В листинге 5.9 показано, как молено адаптировать пример приложения, предоставляющего информацию о планетах, для использования JSON. Листинг 5.9. Содержимое файла DataJSONPopup.js function showlnfo(event) { var planet=this.id; var scriptUrl=planet+".json"; new net.ContentLoader(scriptUrl,parseJSON); } function parseJSON() , { var name=""; var descrip=""; var jsonTxt=net.req.responseText; var jsonObj=eval("("+jsonTxt+")"); name=j sonObj.planet.name var ptype=jsonObj.planet.type; if (ptype) { descrip+="<h2>"+ptype+"</h2>"; } var infos=jsonObj.planet.info; descrip+="<ul>"; for(var i in infos){ descrip+="<li>"+infos +"</li>\n"; } descrip+="</ul>"; top.showPopup(name,descrip); Здесь мы также загружаем данные с помощью ContentLoader. Функцией обратного вызова в этом случае является parse JSON (). Текст ответа представляет собой JavaScript-выражение, поэтому мы можем создать граф объектов путем вызова eval (). var jsonObj=eval("("+jsonTxt+")") ; Заметьте, что перед обработкой выражения нам надо поместить его в скобки. Теперь мы можем обращаться к свойствам объекта по имени, а это позволяет сократить размеры кода и сделать его более удобным для восприятия, чем методы обработки структуры DOM, которые мы использовали при работе с XML. Здесь метод showPopup() не приводится, поскольку он выглядит точно так же, как и в листинге 5.7. Какой же вид имеют JSON-данные? В листинге 5.10 показана информация о планете Земля, представленная как строка JSON. Листинг 5.10. Содержимое файла earth, json { "planet": { "name": "earth", "type": "small", "info": [ "Earth is a small planet, third from the sun", "Surface coverage of water is roughly two-thirds", "Exhibits a remarkable diversity of climates and landscapes" ] } С помощью фигурных скобок определяются ассоциативные массивы, а квадратные скобки обозначают массивы с числовыми индексами. Допускается вложенность любых видов скобок. В приведенном примере мы определили объект planet, содержащий три свойства. Свойства name и type представляют собой обычные строки, а свойство info является массивом. Формат JSON используется реже, чем XML, но JSON-данные могут быть обработаны любым интерпретатором JavaScript, включая Mozilla Rhino на базе Java и Microsoft JScript .NET. Библиотеки JSON-RPC содержат средства разбора JSON для различных языков программирования (соответствующие ссылки приведены в конце данной главы), а также инструмент JavaScript "Stringiner", предназначенный для преобразования JavaScript-объектов в строки JSON. Таким образом, JSON можно рассматривать как формат для двустороннего взаимодействия. Если интерпретатор JavaScript доступен и на стороне клиента, и на стороне сервера, целесообразно выбрать формат JSON. В рамках проекта JSON-RPC были также разработаны библиотеки, предназначенные для разбора и генерации JSON-сообщений и ориентированные на языки, которые часто используются при разработке программ, выполняемых на стороне сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 22:30 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
Может, проще будет открыть для себя Prototype? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 22:40 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
Кстати, у кого есть опыт работы с JSON при получении данных с помощью AJAX: что быстрее - формировать строку с определнными разделителями и парсить у клиента или делать строку, которую клиент может с помощью eval() преобразовать в массив с данными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 22:56 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
JSON хорош как легкое универсальное средство обмена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2007, 23:00 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, Пример я видел, но он не даёт ответа на вопрос."Во всех примерах, которые я нашел, показан статический JSON формат на сервере." В листинге 5.10 пример статического массива. Как преобразовать созданый массив в JSON формат и отправить клиенту для преобразования с помощью eval? Мне нужно передать клиенту только данные без операторов, которые эти данные получили из БД на сервере. Я могу преобразовать созданный массив в JSON формат на сервере с помощью var arrayOfItems= arrayOfItems.toJSONString();. Но как передать эти данные клиенту ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 10:24 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
Мне кажется, ты невнимательно прочел ... или не знаешь, что аджакс всегда получает текстовую информацию. На серваке создаешь строку вида '{"planet":{"name":"earth","type":"small","info":["Earth is a small planet, third from the sun","Surface coverage of water is roughly two-thirds","Exhibits a remarkable diversity of climates and landscapes"]}' и возвращаешь в ответе. А на клиенте - eval. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 13:29 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, Объясняю ещё раз - мне нужно эту строку создать программно из массива, полученного из БД. AJAX передаёт данные в форматах: - text - xml - json ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 14:31 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
если php5, то примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 20:15 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
IDVsbruckКстати, у кого есть опыт работы с JSON при получении данных с помощью AJAX: что быстрее - формировать строку с определнными разделителями и парсить у клиента или делать строку, которую клиент может с помощью eval() преобразовать в массив с данными? Использовать JSON не так удобно - как может показаться на первый взгляд. 1) С точки зрения архитектуры получается более связанное решение (сервер+клиент). 2) Главное, что в XML можно явно задавать кодировку - это часто необходимо (в JSON это можно сделать только в заголовке ответа) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2007, 21:16 |
|
||
|
JSON формат
|
|||
|---|---|---|---|
|
#18+
mrJust, Нет, нужно в JS. Всё получается, если используешь примерно такую схему; - req.setURL("*.jsp"); - oracle.jdbc.OracleDriver(); - eval(). И не .получается, если используешь: - req.setURL("*.html"); - ADODB.Connection; - eval(). На клиенте переданный массив пуст, если он не расписан буквально, а создан программно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2007, 12:53 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=34974594&tid=1457288]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 167ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...