Последнее время много изучаю AJAX и обратил внимание на то, что многие разработчики используют для отправки запросов jQuery.
Но что, если проект у вас маленький и использование данной библиотеки только утяжеляет его?
Предлагаю вашему вниманию способ отправки AJAX-запросов без jQuery:
// URL, на который будем посылать запрос
var locationRequest = 'server_side.php';
/*Попытаемся создать код мультиплатформенным.
IE и нормальные браузеры создают объект XMLHttpRequest по разному.
Кроме того, разные версии IE его создают по разному.
Придётся повторить операцию для всех.
*/
var request;
function createRequest() {
// Это для адекватных современных браузеров
if (window.XMLHttpRequest) request = new XMLHttpRequest();
// Internet Explorer
else if (window.ActiveXObject) {
// IE разных версий
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){}
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
return request;
}
function sendRequest(locationRequest, parameters) {
// Создаем запрос
request = createRequest();
if (request) {
// Посылаем POST-запрос.
// Указываем адрес, false - асинхронный режим выключен
request.open("POST", locationRequest, false);
// Отправляем дополнительно header, т.к. метод POST
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// Отправляем запрос с параметрами
//(несколько параметров разделять &)
request.send(parameters);
// Если всё хорошо
if (request.status == 200) {
// Берём ответ в виде строки
var stRespond = request.responseText;
// Выполняем eval(), предварительно проверив данные. Мало ли ;)
var evalRespond = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(stRespond.replace(/"(\.|[^"\])*"/g, ''))) && eval('(' + stRespond + ')');
// Создаем массив данных
var arrayRespond = new Object(evalRespond);
} else { //Если сервер вернул ошибку
alert("Ошибка получения данных:\n" + request.statusText);
}
} else {
alert("Браузер не поддерживает технологию AJAX");
}
return arrayRespond;
}
// использование
sendRequest(locationRequest,'параметры, например (showPage="3")');
Код с подсветкой тут.
Буду рад, если данный код поможет в вашей работе.
Также буду благодарен за комментарии, исправления и за ваши реализации.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.