Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Структура данных для JavaScript

Ответить
Настройки темы
[решено] Структура данных для JavaScript

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Coutty
Дата: 11-08-2007
Описание: сменил тему
Есть, скажем, такой XML-документ:
HTML код: Выделить весь код
<map> <settings> <field width="5" height="2" /> </settings> <line num="0"> <col num="0" type="gray"></col> <col num="1" type="gray">some text</col> <col num="2" type="gray"></col> <col num="3" type="red"></col> <col num="4" type="gray"></col> </line> <line num="1"> <col num="0" type="gray"></col> <col num="1" type="gray"></col> <col num="2" type="red"></col> <col num="3" type="red"></col> <col num="4" type="gray"></col> </line> </map>

Данный файл будет подгружаться с помощью XMLHttpRequest или, м.б., JsHttpRequest. Но вот как его разобрать на переменные?
Нужно получить что-то вроде этого:

field["width"] = 5;
field["height"] = 2;
cell[0][0]["type"] = "gray";
cell[0][0]["content"] = "";
cell[0][1]["type"] = "gray";
cell[0][1]["content"] = "some text";
и т.д.

(хотя, я ещё и не знаю, как массивы в JavaScript выглядят)

Хотелось бы посмотреть рабочий JS или ссылку на материал, где описывается XML-парсер JS на русском.
Даже не знаю с чего начать искать. Запросы в Гугл вида "Обработка XML средствами JavaScript" выводят один сплошной AJAX =(

Отправлено: 14:52, 10-08-2007

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Coutty,
Надо просто правильные слова в поиск вводить

Пример
Ещё один

Но я бы всё таки предподчёл парсить на стороне сервера, так как разные браузеры по разному парсят XML (то есть разные объекты для это предоставляют)
Лучше воспользоваться аяксом и возвращать JSON

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

Цитата Coutty:
Данный файл будет подгружаться с помощью XMLHttpRequest или, м.б., JsHttpRequest. Но вот как его разобрать на переменные?
Можно вообще скрипту сразу адрес этого документа передавать - он тогда его закачивает и возвращает JSON данного XML-документа - чтобы меньше телодвижений с посылкой файла

-------
Fortes fortuna adiuvat

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:29, 10-08-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата vadimiron:
Лучше воспользоваться аяксом и возвращать JSON
Хм... Может тогда вместо XML использовать JSON для хранения данных?
Сейчас проект ещё только в самом начале пути. Но только я не сталкивался с этим форматом. Как эту структуру вообще использовать?

Например, в Википедии такой образец:
HTML код: Выделить весь код
{ "firstName": "Иван", "lastName": "Иванов", "address": { "streetAddress": "Московское ш., 101, кв.101", "city": "Ленинград", "postalCode": 101101 }, "phoneNumbers": [ "812 123-1234", "916 123-4567" ] }

Это ж как тогда будет выглядеть, если использовать данные подобно моему XML?

Код: Выделить весь код
{
  "settings": {
     "field": {
        "width": 5,
        "height": 2
     }
  },
  "line": [
     {
     "num": 0,
     "cols": [
        {
        "num": 0,
        "type": "gray",
        "content": ""
        },
        {
        "num": 1,
        "type": "gray",
        "content": "some text"
        }
... и так далее
     ]
     }
   ]
}
Так?

А потом просто вызывать имяПеременнойКоторойПрисвоилиВсюЭтуСтруктуру.line[0].cols[1].content ? И значение будет "some text"?
Что-то я не особо понял из описания на их сайте json.org.

Отправлено: 16:16, 10-08-2007 | #3


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Coutty,
JSON - это формат для более быстрой обработки Java-Script-ом. Когда получаем данные в JSON - их достаточно обработать функцией eval и результат присвоить переменной в JavaScript.

Опишите приложение, которое формирует данные: какой язык и тд.

Для ПХП например, есть уже готовый класс, который из какой либо PHP-структуры создаёт JSON-данные - очень удобно

-------
Fortes fortuna adiuvat

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:49, 10-08-2007 | #4


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Серверная часть - PHP (думаю, что без MySQL будет, но посмотрим).
Но большую часть работы будет делать JavaScript.
Это возможно =^.^= будет стратегическая онлайн игрушка.

XML или JSON будут описывать стуктуру поля, местонахождение объектов и пр. поклеточно.

Цитата vadimiron:
Когда получаем данные в JSON - их достаточно обработать функцией eval и результат присвоить переменной в JavaScript.
Это как?
var cell = eval ("data/map.js"); ?

В PHP эти данные использоваться вряд ли будут. А вот конвертация стуктуры PHP в JSON - вполне пригодилось бы. Как называется / где взять?

Отправлено: 18:38, 10-08-2007 | #5


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата Coutty:
var cell = eval ("data/map.js"); ?
Не, с помощью Аякса получаем HTTP-Response и Body этого Response-а будет JSON-код.

Начиная с PHP 5.2, JSON - расширение для PHP. Если расширения нет или более старая версия, то парочка в сравнении

-------
Fortes fortuna adiuvat


Отправлено: 18:48, 10-08-2007 | #6


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


vadimiron, ммм... А если всё-таки без Аякса обойтись? Например, просто скрипт подключить, где будет JSON-код находиться (т.е. последовательно в html загружать скрипты - JSON, а следом - обработчик его). То как в этом случае использовать?

Цитата vadimiron:
Начиная с PHP 5.2, JSON - расширение для PHP.
Нет, у меня даже на локальном хосте он старее. Про хостинг (потенциально) и говорить не приходится. Вряд ли они там обновляют часто.

Цитата vadimiron:
то парочка в сравнении
Так там вроде подразумевается использование расширений PHP, Pear, Zend и т.д. На хостинге могут и не поставить. Или оно в качестве подключаемого файла php работает?

Я ещё так подумал - а откуда PHP-скрипт возьмёт данные? Это ж JS их будет генерировать на основе пользовательских действий и передавать готовый результат на сохранение... Т.ч., пожалуй, из JS придётся сочинять. Но, думаю, это несложно будет и самому сделать. Разобраться только в его структуре. А до этого ещё выяснить - как использовать JSON-данные

Отправлено: 19:37, 10-08-2007 | #7


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


В итоге остановился на таком решении:
Данные хранятся в JSON-формате.
Для подгрузки этих данных используется объект JsHttpRequest из одноимённой библиотеки.
Для конвертации JSON в JS-объект используется строка вида
Код: Выделить весь код
var myObject = eval('(' + myJSON + ')');
А для обращения к данным уже myObject.map[0][2].type и т.д.

Удобно так стало без XML

Отправлено: 17:30, 11-08-2007 | #8



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Структура данных для JavaScript

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Загрузочный диск для сохранения данных с HDD .Rock. Microsoft Windows 2000/XP 2 23-08-2009 22:23
Проверка данных пользователя (PHP + JavaScript или Ajax) darksmoke Вебмастеру 2 15-06-2009 17:28
Прочие БД - Структура и организация данных в программе Crystal под DOS MaryM Программирование и базы данных 0 30-09-2008 17:11
[решено] Скрипт для корректировки данных пользователя в AD HLT Microsoft Windows NT/2000/2003 2 04-07-2008 10:32
Delphi - *Решено* | Структура OpenFileName на Delphi DillerInc Программирование и базы данных 10 21-08-2007 21:07




 
Переход