Меню

Контакты

+ 996 312 46 07 70
(прямой)
+ 996 555 55 03 11
Мы рады вашему звонку!

Авторизация




Отправка формы при помощи Ajax(XMLHttpRequest)
Отправка формы при помощи Ajax(XMLHttpRequest)
Данный набор функций позволяет отправлять данные на сервер при помощи XMLHttpRequest так, что на сервере они будут восприниматься как данные обычной POST-формы. Поскольку кодирование данных осуществляет функция escapeURIComponent(), всегда используется кодировка UTF-8.
Работает в браузерах IE5.5+, Mozilla, Safari, Опере 8+.

 

/*
Создание XMLHttpRequest-объекта
Возвращает созданный объект или null,
если XMLHttpRequest не поддерживается
*/
function createRequestObject() {
var request = null;
try {
request=new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){}
if(!request) try {
request=new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
if(!request) try {
request=new XMLHttpRequest();
} catch (e){}
return request;
}
/*
Кодирование данных (простого ассоциативного массива вида
{ name : value, ...} в URL-escaped строку (кодировка UTF-8)
*/
function urlEncodeData(data) {
var query = [];
if (data instanceof Object) {
for (var k in data) {
query.push(encodeURIComponent(k) + "=" +
encodeURIComponent(data[k]));
} return query.join('&');
} else {
return encodeURIComponent(data);
}
}
/*
Выполнение POST-запроса
url - адрес запроса
data - параметры в виде простого ассоциативного массива
{ name : value, ...}
callback - (не обяз.) callback-функция,
которая будет вызвана после выполнения запроса
и получения ответа от сервера
*/
function serverRequest(url, data, callback) {
var request = createRequestObject();
if(!request) return false;
request.onreadystatechange = function() {
if(request.readyState == 4 && callback) callback(request);
};
request.open('POST', url, true);
if (request.setRequestHeader)
request.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
request.send(urlEncodeData(data));
return true;
}

 

 

Если на сервере проверяется Referer, то надо учитывать, что Firefox при XMLHttpRequest не передает его в заголовках. В этом случае в код следует включить строчку

request.setRequestHeader("Referer", location.href);

 

 

Новости антивируса Dr. Web


Наши партнёры