{ 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);