Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.06.2008, 23:47
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

XMLHTTPRequest POST метод
напишите пожалуйста код как реализовать такую задачу:
есть страница с формой и файл обработчик формы(проверка корректности и сохранение в базу. файл уже зделан). Как зделаать чтобы пост методом XMLHTTPRequest обработать файлом-обработчиком форму.Если неправильно введено данные то в файле есть вывод ошибок(напр. echo "error". их надо вывести в страницу с формой.Гуглил ничего рабочего не нашёл.
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2008, 01:06
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

gaolong, а в чем проблема? - отправляете данные посредством XMLHTTPRequest'a и в самом простом случае, если будет ошибка, печатайте ваш "error" - именно это значение будет доступно в свойстве объекта responseText (ну и дальше соответствующая проверка - if (obj.responseText == 'error' { .. то вывод на страницу ..}))

Сообщение от gaolong
напишите пожалуйста код ... Гуглил ничего рабочего не нашёл
Если у вас вообще нет никаких наработок, то - продолжайте упорно гуглить (на каждом шагу по первому поисковому запросу тысячи примеров работы с аяксом; на этом сайте - тонна полезной инфы, в википедию сходите). Если у вас уже что-то есть, и проблемы в конкретных местах - выкладывайте код проблемного места, - будем разбираться, в чем там дело.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2008, 09:44
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

я делал и по книге и по инету со статей брал...выводят пустоту...может чтото нетак делаю просто...почемуто не обрабатывается и всё....мы с другом сутки мучали...и ничего.Поэтому и прошу чтобы ктото написал правильную работу)

вот 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 то выводит пустое сообение

Последний раз редактировалось gaolong, 30.06.2008 в 11:08.
Ответить с цитированием
  #4 (permalink)  
Старый 30.06.2008, 10:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

На форуме есть теги для форматирования кода, кстати.

Как минимум нужно в php-скрипте поменять $_GET на $_POST.
Ответить с цитированием
  #5 (permalink)  
Старый 30.06.2008, 11:01
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

Вот ещё 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;

?>

Последний раз редактировалось gaolong, 30.06.2008 в 11:04.
Ответить с цитированием
  #6 (permalink)  
Старый 30.06.2008, 11:02
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

Сообщение от Kolyaj Посмотреть сообщение
На форуме есть теги для форматирования кода, кстати.

Как минимум нужно в php-скрипте поменять $_GET на $_POST.
ой..простите...нетот код отправил формы...там пост.
Ответить с цитированием
  #7 (permalink)  
Старый 30.06.2008, 11:14
Аспирант
Отправить личное сообщение для gaolong Посмотреть профиль Найти все сообщения от gaolong
 
Регистрация: 29.06.2008
Сообщений: 35

Ура! решил) отправку заголовка не хватало в 2 примере) Вот только оно выводит после формы...а как выводить в нужном для меня месте?

и не работает в IE 6.

Последний раз редактировалось gaolong, 30.06.2008 в 11:20.
Ответить с цитированием
  #8 (permalink)  
Старый 30.06.2008, 13:47
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от gaolong
Вот только оно выводит после формы...
там вообще нет формы, просто input'ы. Сделайте блочное закрытие div'а - <div id="myDivElement"></div>
__________________
Тонкости ECMAScript
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44
Не вызывается callback у post в IE maxtor jQuery 24 25.01.2009 13:57
1. Календарь 2. объект String метод getEMail Мандариновая Общие вопросы Javascript 8 31.10.2008 11:33
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44
Проблемы с методом POST demoniqus Общие вопросы Javascript 16 25.07.2008 18:09