XMLHTTPRequest POST метод
напишите пожалуйста код как реализовать такую задачу:
есть страница с формой и файл обработчик формы(проверка корректности и сохранение в базу. файл уже зделан). Как зделаать чтобы пост методом XMLHTTPRequest обработать файлом-обработчиком форму.Если неправильно введено данные то в файле есть вывод ошибок(напр. echo "error";). их надо вывести в страницу с формой.Гуглил ничего рабочего не нашёл. |
gaolong, а в чем проблема? - отправляете данные посредством XMLHTTPRequest'a и в самом простом случае, если будет ошибка, печатайте ваш "error" - именно это значение будет доступно в свойстве объекта responseText (ну и дальше соответствующая проверка - if (obj.responseText == 'error' { .. то вывод на страницу ..}))
Цитата:
|
я делал и по книге и по инету со статей брал...выводят пустоту...может чтото нетак делаю просто...почемуто не обрабатывается и всё....мы с другом сутки мучали...и ничего.Поэтому и прошу чтобы ктото написал правильную работу)
вот 1 из многочисленных попыток... код index.php ================================================== ============== <input type="text" id="input_1" /> <input type="text" id="input_2" /> <input type="button" class="button" value=" Отправить форму " onclick="process();" /> <script language="javascript" type="text/javascript"> var xmlHttp = new XMLHttpRequest(); function process() { if (xmlHttp) { try { var data1 = document.getElementById("input_1").value; var data2 = document.getElementById("input_2").value; var send_post="data1=" + data1 + "&data2=" + data2; xmlHttp.open("POST", "form.php", true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = data_obr; xmlHttp.send(send_post); } catch (e) { alert("Не удалось соединиться с сервером:\n" + e.toString()); } } } function data_obr() { if (xmlHttp) { if(xmlHttp.onreadystatechange == 4) { alert(xmlHttp.responseText); } } } </script> ================================================== ================ form.php ================================================== ================ <?php if (isset($_POST['data1'])) $data1 = $_POST['data1']; echo $data1; ?> ================================================== ================ если убрать data_obr то выводит пустое сообение |
На форуме есть теги для форматирования кода, кстати.
Как минимум нужно в php-скрипте поменять $_GET на $_POST. |
Вот ещё 1 вариант...тут уже должно работать,но пишет что не обьявлены переменные data1 data2
js.js ---- var xmlHttp=createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var xmlHttp; try { xmlHttp=new XMLHttpRequest(); } catch(e) { var XMLHttpVersions=new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) { try { xmlHttp= new ActiveXObject(XmlHttpVersions[i]); } catch(e) {} } } if (!xmlHttp) alert("error of creating XMLHttpRequest"); else return xmlHttp; } function process() { if(xmlHttp) { try { var data1 = document.getElementById("input_1").value; var data2 = document.getElementById("input_2").value; var send_post="data1=" + data1 + "&data2=" + data2; xmlHttp.open("POST","form.php",true); xmlHttp.onreadystatechange=handleRequestStateChange; xmlHttp.send(send_post); } catch(e) { alert("could not connect"+e.toString()); } } } function handleRequestStateChange() { myDiv = document.getElementById("myDivElement"); if (xmlHttp.readyState==1) { myDiv.innerHTML += "query state 1(sending)<br />"; } else if(xmlHttp.readyState==2) { myDiv.innerHTML += "query state 2(sended)<br />"; } else if(xmlHttp.readyState==3) { myDiv.innerHTML += "query state 3(exchanging)<br />"; } else if(xmlHttp.readyState==4) { if(xmlHttp.status==200) { try { response=xmlHttp.responseText; myDiv.innerHTML += "query state 4(completed).Server ansver: <br/>"; myDiv.innerHTML +=response; } catch(e) { alert("error of reading"+ e.toString()); } } else { alert("problems fith connecting"+xmlHttp.statusText); } } } index.php -- <!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"> <title>Untitled Document</title> <script type="text/javascript" src="js.js"></script> </head> <body> <div id="myDivElement" /><br> <input type="text" id="input_1" /> <input type="text" id="input_2" /> <input type="button" class="button" value=" Отправить форму " onclick="process();" /> </body> </html> form.php --- <?php if (isset($_POST['data1'])) $data1 = $_POST['data1']; if (isset($_POST['data2'])) $data2 = $_POST['data2']; echo $data1; echo "<br>"; echo $data2; ?> |
Цитата:
|
Ура! решил) отправку заголовка не хватало в 2 примере) Вот только оно выводит после формы...а как выводить в нужном для меня месте?
и не работает в IE 6. |
Цитата:
|
Часовой пояс GMT +3, время: 00:22. |