AJAX запрос
Автор: Евгений Рыжков Дата публикации:
Задача
Сделать кроссбраузерный AJAX запрос без использования каких-либо Javascript фреймворков вроде jQuery.
Решение
var req; // Путь к файлу на сервере на который будет отправляться запрос var handlerPath = 'xmlhttp.php'; function createRequest() { // Создание объекта XMLHttpRequest отличается для Internet Explorer и других обозревателей, поэтому для совместимости эту операцию приходиться дублировать разными способами if (window.XMLHttpRequest) req = new XMLHttpRequest(); // normal browser else if (window.ActiveXObject) { // IE try { req = new ActiveXObject('Msxml2.XMLHTTP'); // IE разных версий } catch (e){} // может создавать try { // объект по разному req = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){} } return req; } function getData(handlerPath, parameters) { // Создаем запрос req = createRequest(); if (req) { // Отправляем запрос методом POST с обязательным указанием файла обработчика (true - асинхронный режим включен) req.open("POST", handlerPath, false); // При использовании объекта XMLHttpRequest с методом POST требуется дополнительно отправлять header req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // Передаем необходимые параметры (несколько параметров разделяются амперсандами) req.send(parameters); // Для статуса "OK" if (req.status == 200) { // Получаем ответ функции в виде строки var rData = req.responseText; // Проверяем данные с помощью регулярных выражений, после выполняем функцию eval() var eData = !(/[^,:{}[]0-9.-+Eaeflnr-u nrt]/.test(rData.replace(/"(\.|[^"\])*"/g, ''))) && eval('(' + rData + ')'); // Создаем массив данных var eArray = new Object(eData); } else { alert("Не удалось получить данные:n" + req.statusText); } } else { alert("Браузер не поддерживает AJAX"); } return eArray; } [...] // вызов функции AJAX запроса getData(handlerPath,'строка с параметрами, например (giveProducts="15")');