powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JSON формат
12 сообщений из 12, страница 1 из 1
JSON формат
    #34969337
ik_55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На стороне сервера создан массив.
Как его преобразовать в JSON формат и отправить клиенту для преобразования с помощью eval?
Во всех примерах, которые я нашел, показан статический JSON формат на сервере.
...
Рейтинг: 0 / 0
JSON формат
    #34970223
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подробнее? Как с помощью JavaScript работать с JSON?
...
Рейтинг: 0 / 0
JSON формат
    #34970230
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто приведу текст из книги "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-сообщений и ориентированные на языки, которые часто используются при разработке программ, выполняемых на стороне сервера.
...
Рейтинг: 0 / 0
JSON формат
    #34970246
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, проще будет открыть для себя Prototype?
...
Рейтинг: 0 / 0
JSON формат
    #34970272
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у кого есть опыт работы с JSON при получении данных с помощью AJAX: что быстрее - формировать строку с определнными разделителями и парсить у клиента или делать строку, которую клиент может с помощью eval() преобразовать в массив с данными?
...
Рейтинг: 0 / 0
JSON формат
    #34970279
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JSON хорош как легкое универсальное средство обмена.
...
Рейтинг: 0 / 0
JSON формат
    #34970821
ik_55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruck,
Пример я видел, но он не даёт ответа на вопрос."Во всех примерах, которые я нашел, показан статический JSON формат на сервере." В листинге 5.10 пример статического массива.

Как преобразовать созданый массив в JSON формат и отправить клиенту для преобразования с помощью eval?
Мне нужно передать клиенту только данные без операторов, которые эти данные получили из БД на сервере.
Я могу преобразовать созданный массив в JSON формат на сервере с помощью var arrayOfItems= arrayOfItems.toJSONString();. Но как передать эти данные клиенту ???
...
Рейтинг: 0 / 0
JSON формат
    #34971602
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, ты невнимательно прочел ... или не знаешь, что аджакс всегда получает текстовую информацию.
На серваке создаешь строку вида
'{"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.
...
Рейтинг: 0 / 0
JSON формат
    #34971874
ik_55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruck,
Объясняю ещё раз - мне нужно эту строку создать программно из массива, полученного из БД.

AJAX передаёт данные в форматах:
- text
- xml
- json
...
Рейтинг: 0 / 0
JSON формат
    #34973153
mrJust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если php5, то примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?php
// select from db
// заполняем ассоциативный массив $data
$data = array ('a'=> 1 ,'b'=> 2 ,'c'=> 3 ,'d'=> 4 ,'e'=> 5 );

echo json_encode($data);
?>
...
Рейтинг: 0 / 0
JSON формат
    #34973243
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckКстати, у кого есть опыт работы с JSON при получении данных с помощью AJAX: что быстрее - формировать строку с определнными разделителями и парсить у клиента или делать строку, которую клиент может с помощью eval() преобразовать в массив с данными?

Использовать JSON не так удобно - как может показаться на первый взгляд.

1) С точки зрения архитектуры получается более связанное решение (сервер+клиент).
2) Главное, что в XML можно явно задавать кодировку - это часто необходимо (в JSON это можно сделать только в заголовке ответа)
...
Рейтинг: 0 / 0
JSON формат
    #34974594
ik_55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mrJust,
Нет, нужно в JS.
Всё получается, если используешь примерно такую схему;
- req.setURL("*.jsp");
- oracle.jdbc.OracleDriver();
- eval().
И не .получается, если используешь:
- req.setURL("*.html");
- ADODB.Connection;
- eval().
На клиенте переданный массив пуст, если он не расписан буквально, а создан программно?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JSON формат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]