Основы программирования на JavaScript



              

XML, JSON или текст - часть 2


& -->&
< -->&lt;
> -->&gt;
" -->&quot;
' -->&#39;

Например, узел <group name="Bill & Paul" /> является недопустимым и должен быть заменен на <group name="Bill &amp; Paul" />.

  • Приходящие с сервера данные должны посылаться с content-type, заданным как text/xml. Если извлекается файл с расширением .xml, то это должно происходить автоматически. Если данные извлекаются из сценария, необходимо задавать это вручную.

    Для PHP добавьте следующее:

    <?php header('Content-type: text/xml'); ?>

    Для ASP добавьте:

    <% response.contentType = "text/xml" %>

  • Для всех других языков добавьте эквивалентный заголовок content-type.

    Если этот заголовок не задан, свойство responseXML объекта XMLHttp будет пустым (это свойство будет описано далее).

  • JSON имеет аналогичный набор правил, и всю документацию по способам записи можно увидеть на json.org. Однако упрощенно можно сказать, что:

    • объекты начинаются и заканчиваются с помощью символов { и } соответственно;
    • массивы начинаются и заканчиваются с помощью символов [ и ] соответственно;
    • все строки заключаются в двойные кавычки ";
    • символы " в строке должны экранироваться: \".

    Проще говоря, строка JSON должна представлять допустимый объект JavaScript.

    Теперь посмотрим на то, как можно выполнить синтаксический разбор этих данных. В данный момент мы создадим просто сценарий, который сообщит, сколько имеется контактов, и выведет о них информацию. Начнем с версии XML, возвращаясь к предыдущему незаконченному фрагменту кода:

    function processingFunction(){ if(oXml.readyState!=4) return; // запрос не выполнен

    // Результаты обрабатываются здесь. Подробнее дальше! }

    Когда скрипт попадает в тело функции, запрос XMLHttp будет выполнен. Объект XMLHttp имеет два метода для возврата данных: responseXML и responseText. Так как в данный момент мы работаем с файлом XML, то будем использовать responseXML:

    function processingFunction(){ if(oXml.readyState!=4) return;




    Содержание  Назад  Вперед