Цитата(sergej.z @ 19.3.2006, 20:26 ) | | Это ведь методом Get отошлётся... А надо бы Post. |
Вобще-то то был комбинированный запрос. Вот только POST: index.htm
| Код | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content='text/html; charset=windows-1251'> <meta name="Generator" content='EditPlus 2.21.330'> <meta name="Author" content='Ciber SLasH'> <title>JavaScript :: Отсылка данных с помощью XmlHttpRequest</title> <script type='text/javascript'> var request = [ ["param1", "bla bla"], ["param2", "какая-то чепуха"] ]; var XmlHttp;
/*** Инициализация XmlHttpRequest-а ***/ function init() { var is_IE = false; if (window.XMLHttpRequest) { // Mozilla try { XmlHttp = new XMLHttpRequest(); } catch (e) { XmlHttp = false; } } else if (window.ActiveXObject) { // IE try { XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0"); } catch (e) { try { XmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { XmlHttp = false; } } } is_IE = true; } if (XmlHttp) { if (is_IE) XmlHttp.onreadystatechange = parseRequest; else XmlHttp.onload = parseRequest; return true; } else return false; } /*** Обработка ответа ***/ function parseRequest() { if (XmlHttp.readyState == 4) { if (XmlHttp.status == 200) { /* Пришёл ответ, обрабатываем либо через XmlHttp.responseText, либо через XmlHttp.responseXML.documentElement */ resultDIV.innerHTML = XmlHttp.responseText; } else { // Обрабатываем ошибки: XmlHttp.status, XmlHttp.statusText resultDIV.innerHTML = "<b>XmlHttp.status: </b>"+XmlHttp.status+"<br>"+ "<b>XmlHttp.statusText: </b>"+XmlHttp.statusText; } } } /** * Отправка запроса * @param1 string url — URL серверного скрипта; * @param2 string queryString — строка запроса **/ function sendQuery(url, queryString) { if (!isXmlHttpInit) { alert("Объект XmlHttmRequest не удалось создать !!"); return false; } XmlHttp.open('POST', url, true); if (queryString) { // если нужно передать параметры XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); XmlHttp.send(queryString); } else XmlHttp.send(null); } /** * Сборка параметров строки запроса * @param1 array aParams — массив, элементы которого вида: ["параметр", "значение"] * @param2 array aData — массив данных, вида: ["данные1", "данны2", .., "данныеN"] **/ function buildParams(aParams, aData) { var query = ""; for (var i = 0; i < aParams.length; i++) { // собираем параметры query += aParams[i][0]+"="+encodeURIComponent(aParams[i][1])+"&"; } query = query.substr(0, query.length-1); // обрезаем последний амперсанд if (aData) { // если нужно передать данные for (var i = 0; i < aData.length; i++) { query += "data[]="+encodeURIComponent(aData[i])+"&"; } query = query.substr(0, query.length-1); } return query; }
onload = function () { isXmlHttpInit = init(); resultDIV = document.getElementById("result"); request = buildParams(request); var req = request; for (var i = 0; i < req.length; i++) { if (req.charAt(i) == "&") { req = req.substr(0, i)+"&"+req.substr(i+1); } } document.getElementById("request").innerHTML = req; } </script> <style type='text/css'> html, body {height: 95%} html>body {height: 100%} #request, #result {padding: 5px; border: 2px solid black; overflow: auto} #request {height: 20%; color: blue} #result {height: 60%} </style> </head>
<body> Запрос: <div id='request'></div> <input type="button" onClick='sendQuery("test.php", request)' value="Отправить запрос"><br> Ответ: <div id='result'></div> </body> </html>
|
test.php:
| Код | <?php $query = iconv("UTF-8", "cp1251", print_r($_POST, true)); header('Content-Type: text/html; charset=windows-1251'); echo "<pre><b>POST:<hr></b>".$query."</pre>"; ?>
|
|