- •Яковлев б.С., доцент, канд. Техн. Наук конспект лекций
- •Специальные языки программирования
- •090900 «Информационная безопасность»
- •18.1. Общие сведения 151
- •20.1. Общие сведения 180
- •24.1. Общие сведения 237
- •25.1. Общие сведения 253
- •27.1. Понятие регулярного выражения 278
- •29.1. Общая информация 305
- •1. Основы языка JavaScript
- •1.1. Основные особенности JavaScript
- •2. Операторы языка
- •2.1. Операторы сравнения
- •2.2. Комментарии в языке JavaScript
- •2.3. Пример проверки операции сравнения
- •3. Формы на веб страницах и их обработка
- •3.1. Обработка интернет формы
- •3.2. Применение регулярных выражений при проверке интернет форм
- •4. Функции
- •4.1. Запуск функции при обработке данных на web-странице
- •4.2. Передача данных функции
- •4.3. Вложенные функции. Ихч свойства и применение
- •5. Объекты: строк, чисел и массивов
- •5.1. Строки
- •5.2. Числа
- •5.3. Массивы
- •5.4. Операции, выполняемые над массивами
- •5.5. Ассоциативные массивы
- •6. Объектная модель документа
- •6.1. Технология xml
- •Изображение: Блок-схема документа
- •Создание эффекта изменения изображения
- •6.2. Добавление и удаление элементов при помощи dom технологии
- •6.3. Понятие об элементах и потомках
- •6.4. Обработка текста средствами dom
- •7. Объект документа (document ) и объект окна ( window )
- •7.1. Объект документа (document )
- •7.2. Объект Window
- •7.3. Функции setTimeout и setInterval
- •7.4. Объект Document (window.Document)
- •8. Основы JavaScript
- •8.1. New Object и объектные литералы
- •8.2. Прототипирование
- •8.3. Переменные Private, Public и Static
- •9. Методы наследования, свойства замыкания
- •9.1. Наследование
- •9.2. Замыкание
- •10. Ajax технология
- •10.1. Общие сведения
- •10.2. Создание объекта xmlHttp
- •10.3. Xml, json и текстовые данные
- •10.4. Пример со списком контактов
- •11. Обработка ошибок при отработке сценариев
- •11.1. Синтаксические ошибки
- •11.2. Ошибки времени выполнения
- •11.3. Объект window.Onerror
- •11.4. Обработка ошибок Try/Catch/Finally и Throw
- •11.5. Обработка ошибок в ajax
- •12. Понятие о рекурсии
- •12.1. Основные понятия
- •12.2. Стек
- •Создание собственного стека
- •Применение рекурсии
- •13. Технология ajax
- •13.1. Общие сведения ajax
- •Ajax является технологией браузера
- •Ajax основан на открытых стандартах
- •Технология ajax улучшает приложения Интернет
- •Ajax можно использовать прямо сейчас
- •Ajax использует xml и запросы http
- •Функция showHint()
- •Функция stateChanged()
- •13.2. Браузеры ajax
- •Поддержка ajax браузерами
- •Исходный код приложения ajax
- •Страница html для примера ajax
- •Код JavaScript приложения ajax
- •Серверные страницы ajax для asp и php
- •Серверная страница ajax - asp и php
- •Пример ajax на asp
- •Пример ajax на php
- •Пример php
- •13.3. Пример ajax c базой данных
- •Описание примера:
- •Разбор примера ajax с базой данных
- •Код JavaScript приложения ajax
- •Серверная страница приложения ajax
- •Код JavaScript приложения ajax
- •Серверная страница приложения ajax
- •13.4. Объект ajax xmlHttpRequest
- •Объект xmlHttpRequest
- •Создание объекта xmlHttpRequest
- •Разбор приведенного примера
- •Еще пример?
- •Разбор приведенного примера
- •Методы объекта xmlHttpRequest
- •Свойство readyState объекта xmlHttpRequest
- •Атрибут id заменяет атрибут name
- •Важное замечание о совместимости
- •Атрибут lang
- •Обязательные элементы xhtml
- •Пример xhtml
- •Определения трех типов документов
- •Как использовать xhtml Преобразование сайта на xhtml
- •Добавить определение doctype
- •Замечание о doctype
- •Имена тегов и атрибутов записать в нижнем регистре
- •Все атрибуты заключают в кавычки
- •Проверка (валидация) Web-сайта
- •14.5. Проверка xhtml
- •Проверка xhtml в соответствии с dtd
- •Модуляризация xhtml
- •Зачем нужна модуляризация xhtml?
- •Модули xhtml
- •14.6. Стандартные атрибуты xhtml
- •Базовые атрибуты
- •События клавиатуры
- •События мыши
- •Мы закончили изучение xhtml, что дальше? Заключительные замечания по xhtml
- •Что делать дальше?
- •15. История php
- •15.1. Общая информация о php
- •15.2. Возможности php
- •15.3. Установка и настройка по
- •15.4. Установка php 4.X.X под Windows
- •Заключение
- •16. Основной синтаксис языка php
- •16.1. Основной синтаксис
- •Разделение инструкций
- •16.2. Переменные, константы и операторы
- •Переменные
- •16.3. Константы
- •16.4. Операторы
- •16.5. Типы данных
- •Тип boolean (булев или логический тип)
- •Тип integer (целые)
- •Тип float (числа с плавающей точкой)
- •16.6. Тип array (массив)
- •Определение при помощи array()
- •Определение с помощью синтаксиса квадратных скобок
- •16.7. Тип object (объекты)
- •Тип resource (ресурсы)
- •Решение задачи
- •Заключение
- •17. Условные операторы
- •17.1. Оператор if
- •17.2. Оператор else
- •17.3. Оператор elseif
- •17.4. Альтернативный синтаксис
- •17.5. Оператор switch
- •17.6. Циклы
- •17.7. Операторы передачи управления
- •17.8. Операторы включения
- •18. Основы клиент-серверных технологий
- •18.1. Общие сведения
- •18.2. Протокол http и способы передачи данных на сервер
- •Форма запроса клиента
- •18.3. Использование html-форм для передачи данных на сервер
- •Для метода get
- •Для метода post
- •18.4. Обработка запросов с помощью php
- •Пример обработки запроса с помощью php
- •Заключение
- •19. Функции в php
- •19.1. Общие понятия
- •19.2. Функции, определяемые пользователем
- •19.3. Аргументы функций
- •19.4. Списки аргументов переменной длины
- •19.5. Использование переменных внутри функции Глобальные переменные
- •Статические переменные
- •19.6. Возвращаемые значения
- •Возвращение ссылки
- •19.7. Переменные функции
- •20. Объектная модель
- •20.1. Общие сведения
- •Классы и объекты
- •20.2. Инициализация переменных
- •Объекты
- •20.3. Наследование
- •20.4. Различие между конструкторами php4 и php3
- •20.5. Оператор ::
- •Оператор parent
- •20.6. Объектная модель php5
- •21. Массивы в php
- •21.1. Общие требования
- •Массивы
- •Операции с массивами
- •Функция count
- •21.2. Функция in_array
- •Функция array_search
- •Функция array_keys
- •Функция array_unique
- •21.3. Сортировка массивов
- •Функция sort
- •Функции asort, rsort, arsort
- •21.4. Сортировка массива по ключам
- •21.5. Применение функции ко всем элементам массива
- •21.6. Выделение подмассива Функция array_slice
- •Функция array_chunk
- •Сумма элементов массива
- •Заключение
- •22. Строковые переменные
- •22.1. Общая информация
- •Поиск элемента в строке
- •22.2. Выделение подстроки Функция strstr
- •Функция substr
- •22.3. Замена вхождения подстроки Функция str_replace
- •Функция substr_replace
- •22.4. Разделение и соединение строки
- •22.5. Строки, содержащие html-код
- •Заключение
- •23. Работа с файлами
- •23.1. Создание файла Функция fopen
- •23.2. Закрытие соединения с файлом
- •Запись данных в файл Функция fwrite
- •23.3. Чтение данных из файла
- •Функция fread
- •Функция fgets
- •Функция fgetss
- •Функция readfile
- •Функция file
- •Функция file_get_contents
- •23.4. Проверка существования файла
- •Функция file_exists
- •Функция is_writable
- •Функция is_readable
- •23.5. Удаление файла
- •Загрузка файла на сервер
- •Заключение
- •24. База данных
- •24.1. Общие сведения
- •Базы данных: основные понятия
- •Индексирование
- •24.2. Субд MySql
- •24.3. Язык sql
- •Немного истории
- •Основные операторы языка sql
- •Оператор create table
- •24.4. Оператор drop table
- •Оператор alter table
- •24.5. Оператор select
- •Оператор insert
- •24.6. Оператор update
- •Оператор delete
- •Заключение
- •25. Функции для работы с базой данных MySql
- •25.1. Общие сведения
- •Построение интерфейса для добавления информации
- •Установка соединения
- •25.2. Выбор базы данных
- •Получение списка полей таблицы
- •25.3. Отображение списка полей в html-форму
- •Запись данных в базу данных
- •25.4. Отображение данных, хранящихся в MySql
- •Заключение
- •26. Сессии и их специфика в php
- •26.1. Авторизация доступа
- •26.2. Механизм сессий
- •Настройка сессий
- •26.3. Работа с сессиями Создание сессии
- •Регистрация переменных сессии
- •26.4. Удаление переменных сессии
- •26.5. Безопасность
- •Заключение
- •27. Понятие регулярного выражения
- •27.1. Понятие регулярного выражения
- •Регулярные выражения в php
- •27.2. Синтаксис регулярных выражений
- •27.3. Подвыражения (подшаблоны)
- •Повторения (квантификаторы)
- •Модификаторы pcre
- •27.4. Регулярные выражения углубленно
- •Обратная ссылка
- •Утверждения
- •Условные подвыражения
- •Заключение
- •28. Взаимодействие php с xml
- •28.1. Введение
- •Основные понятия
- •28.2. Структура xml-документа
- •28.3. Взаимодействие php и xml Расширения sax и dom xml
- •Установка расширения dom xml
- •28.4. Взаимодействие php и xml посредством dom xml
- •Перевод данных xml-файла в объекты и классы php
- •28.5. Обход дерева объектов
- •Добавление новых элементов в xml-документ
- •Заключение
- •29. Шаблон в языке программирования
- •29.1. Общая информация
- •Шаблоны подстановки
- •29.2. Шаблоны FastTemplate
- •Методы FastTemplate
- •Метод define
- •Метод assign
- •29.3. Метод parse
- •Метод FastPrint
- •Решение задачи с помощью шаблонов FastTemplate
- •29.4. Шаблоны Smarty
- •Установка
- •29.5. Основной синтаксис
- •Конфигурационные файлы
- •29.6. Методы
- •Метод assign
- •Метод append
- •Функция capture
- •Функция section
- •Функция foreach
- •Оператор if, elseif, else
- •29.8. Решение задачи с помощью шаблонов Smarty
- •Заключение
- •Библиографический список
10. Ajax технология
10.1. Общие сведения
В последнее время термин AJAX получил широкое распространение. По сути, это необычное название технологии, которая уже давно существует. Однако за последний год JavaScript в стиле AJAX стал очень популярным у многих разработчиков, и мы начинаем видеть, как с его помощью стали создавать различные интересные вещи. Google Mapsи GMail являются двумя наиболее широко известными приложениями AJAX, но в последнее время и другие компании по всему миру начали использовать ее на своих сайтах.
AJAX означает " Asynchronous JavaScript and XML ", т.е. Асинхронный JavaScript и XML. В действительности AJAXсостоит из JavaScript, как и любое другое приложение, и соединения XMLHTTP с Web-сервером. Вот и все! Общая идея заключается в том, что можно извлекать с сервера данные просто по мере необходимости, не обновляя всю страницу.
Прежде всего AJAX почти всегда опирается на серверный язык, такой, как PHP или ASP. Когда пользователю необходимо получить новые данные, JavaScriptзапрашивает их, а сервер, вероятно, запросит базу данных и затем вернет данные. Эти данные можно вернуть в различной форме. Если они структурированы, то это будут обычно данные XML или JSON. Если это очень простые данные (такие, как получение описания какого-то объекта), то можно часто увидеть людей, которые просто записывают эти данные непосредственно в ответ AJAX.
10.2. Создание объекта xmlHttp
При создании запроса AJAX прежде всего необходимо создать объект XMLHTTP. Netscape/Firefox, Opera и другие браузеры имеют этот объект встроенным.Internet Explorer использует ActiveXObject. Поэтому мы создадим одну функцию для работы со всеми этими браузерами:
if(typeof(XMLHttpRequest)!='undefined'){
var getXMLHttpObj = function(){ return new XMLHttpRequest(); }
} else {
var getXMLHttpObj = function(){
var activeXObjects = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var i=0; i<activeXObjects.length; i++){
try{
return new ActiveXObject(activeXObjects[i]);
}catch(err){}
}
}
}
Любой браузер, который поддерживает объект XMLHttpRequest, будет использовать этот встроенный объект. Internet Explorer 6 и более ранние версии будут использовать объект ActiveX XMLHttp компании Microsoft. Существует много различных версий этого объекта, поэтому мы попробуем их все, начиная с самого нового.
Теперь, когда мы имеем объект XMLHttp, можно разместить запрос на сервере:
var oXml = getXMLHttpObj();
oXml.open('GET', 'getData.php', true);
oXml.onreadystatechange = processingFunction;
oXml.send();
function processingFunction(){
if(oXml.readyState!=4) return; // запрос не выполнен
// Результаты обрабатываются здесь. Подробнее дальше!
}
После создания объекта XMLHttp остается еще 4 дополнительных шага. Сначала определяются параметры соединения с помощью функции .open. Функция .open получает 3 аргумента: тип запроса, URL и флаг, который сообщает объекту, выполняться или нет асинхронно.
Первый аргумент, тип запроса, почти всегда будет GET или POST. Если извлекаются данные, то это будет обычно GET, а если отправляется форма с AJAX, то это часто будет POST.
Флаг асинхронности немного отличается почти от всего остального в JavaScript. Если этот флаг задан как false, то код продолжает выполняться, как и любой другой фрагмент кода, то есть он ожидает, пока объект XMLHttp завершит свою работу, прежде чем двигаться дальше. Однако, если этот флаг задан как true, то код продолжает делать то, что следует в коде после запроса. Когда состояние запроса изменяется, вызывается функция, которая определена в onreadystatechange.
В чем различие? Если флаг асинхронности задан как false, то браузер будет полностью заблокирован, пока обрабатывается запрос. Если запрошенные данные нужны в обязательном порядке для продолжения работы, то используйте это значение флага. Если флаг задан как true, то пользователь может продолжать использовать Web-страницу, но ничего не известно о том, когда вернется ответ на запрос. Может потребоваться 1/2 секунды или 1 минута. Все зависит от нагрузки на сервер и соединения конечного пользователя.
Когда все готово, посылается запрос. Затем мы ожидаем. Если запрос выполняется синхронно с функцией обработки, определенной с помощью onreadystatechange, то она будет вызываться несколько раз. На самом деле она вызывается всякий раз при изменении состояния запроса. Существуют различные состояния, такие, как отправка и загрузка данных, но нас интересует только завершение загрузки данных. Если readyState == 4, то запрос выполнен, поэтому в любом другом случае мы просто выходим из функции.
Теперь мы получили данные, но что это за данные?
