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, время: 03:02. |