|
|
|
| Я хочу научиться прораммировать на ajax,
Можете на словах объяснить как такое сделать =)
есть обычная форма
<form action="script.php">
<input type=text name=name><br>
<input type=submit value="Send">
<div id="answer"></div>
|
script.php
<?
if($_GET['name']=="CrazyAngel")
echo "О здарова чувак!!!";
else
echo "кто ты?"
?>
|
вот как сделать чтоб ответ сервера появлялся в том диве без перезагрузки страници? =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(10.07.2006 в 13:46)
| | на скорую руку
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Test</title>
<script language="javascript">
var req;
function loadDoc(url) {
url = url +'?name=' + document.forms.frm.name.value;
alert(url)
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// для версии с ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
function processReqChange() {
// только пр состоянии "complete"
if (req.readyState == 4) {
// для статуса "OK"
if (req.status == 200) {
// здесь идут всякии штуки с полученным ответом
document.getElementById('answer').innerHTML=req.responseText
} else {
alert("Не удалось получить данные:\n" +
req.statusText);
}
}
}
</script>
</head>
<body>
<form name=frm>
<input type=text name=name><br>
<input type=button value="Send" onclick="loadDoc('script.php')">
<div id="answer"></div>
</body>
</html>
|
только в файле script.php, необходимы хедеры: запрет на кеширование и указать кодировку | |
|
|
|
|
|
|
|
для: Crux
(10.07.2006 в 15:10)
| | Спасибо, но что за окно вылазит с моим гет запросом? | |
|
|
|
|
|
|
|
для: CrazyAngel
(10.07.2006 в 15:38)
| | это технические включения:) или просто забыл убрать alert()
....
function loadDoc(url) {
url = url +'?name=' + document.forms.frm.name.value;
alert(url)
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
....
|
| |
|
|
|
|
|
|
|
для: Crux
(10.07.2006 в 19:12)
| | стесняюсь спросить - и что? выводит русский текст? у меня не выводит...
в alert(url) еще выводит, а в req.responseText - нет, одни ????
кодировки прописаны везде. | |
|
|
|
|
|
|
|
для: elenaki
(10.07.2006 в 22:08)
| | У меня все ok, незнаю, я даже кодировки не ставил ни где
прям так как тут все скопировал и все.
вот те два файла =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(10.07.2006 в 22:23)
| | Для корректной работы с XMLHttpRequest, ваш PHP скрипт должен посылать ряд заголовков, а именно: тип содержимого и его кодировку (важно, если вы хотите работать с кириллическим выводом), а также параметры кеширования содержимого — нужно устранить любое кеширование (кажется ИЕ (или какой-то другой браузер) кеширует это дело с большим удовольствием).
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
|
| |
|
|
|
|
|
|
|
для: Crux
(10.07.2006 в 23:20)
| | да. с хедерами выводит. надо будет воспользоваться этим методом. я пока сделала через
XML. ну там это и быстрее будет. потому как данные в запросе не меняются - по клику на
области открываются районы этой области, по клику на районе - города. я просто создала
115 файлов XML, самый большой из которых 20К, и читала их java-script'ом.
а теперь можно попробовать и к базе делать запросы... Спасибо! не могу нарадоваться,
какой тут все-таки мудрый форум. | |
|
|
|
|
|
|
|
для: elenaki
(11.07.2006 в 10:06)
| | плиз ) помогите разобратся )) с годировкой хрень ужасная :(
и на счёт
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
не понел куда их сувать :))) | |
|
|
|
|
|
|
|
для: Panker
(12.07.2006 в 22:01)
| | в php код
в html там все прописанно уже | |
|
|
|
|
|
|
|
для: CrazyAngel
(12.07.2006 в 22:07)
| | gпрост иа как это дурацкое сообшение вылезающее убрать типавы идёте тудато :) | |
|
|
|
|
|
|
|
для: Panker
(12.07.2006 в 22:35)
| | Читай выше =) я такой же вопрос задал =))
Надо просто убрать тестовый alert =)))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Test</title>
<script language="javascript">
var req;
function loadDoc(url) {
url = url +'?name=' + document.forms.frm.name.value;
alert(url)
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// для версии с ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
function processReqChange() {
// только пр состоянии "complete"
if (req.readyState == 4) {
// для статуса "OK"
if (req.status == 200) {
// здесь идут всякии штуки с полученным ответом
document.getElementById('answer').innerHTML=req.responseText
} else {
alert("Не удалось получить данные:\n" +
req.statusText);
}
}
}
</script>
</head>
<body>
<form name=frm>
<input type=text name=name><br>
<input type=button value="Send" onclick="loadDoc('script.php')">
<div id="answer"></div>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: CrazyAngel
(12.07.2006 в 23:06)
| | прости не поделишся как ты это применил :)) хех ) | |
|
|
|
|
|
|
|
для: Panker
(12.07.2006 в 23:41)
| | Я делаю рассылку, и там можно будет подписать без перезагрузки =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(12.07.2006 в 23:43)
| | крутой перец )))
ладненько )) пасибо :)
тоже сделаю тока из за этого рассылку :))))))))))) | |
|
|
|
|
|
|
|
для: Panker
(13.07.2006 в 00:30)
| | прсотите ) за тупость ) но малоли у кого ещё какиенить мелкие скриптики на аяксе есть ) сбросьте что нит :)) ваще классненько так покапатся )
да и на сайтик поставить ) оригенально и понтова :) сори если что )
и ещё кое что!
плиз помогите добавить в этот скрипт
<script language="javascript">
var req;
function loadDoc(url) {
url = url +'?mail=' + document.forms.pages.mail.value;
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// для версии с ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}
function processReqChange() {
// только пр состоянии "complete"
if (req.readyState == 4) {
// для статуса "OK"
if (req.status == 200) {
// здесь идут всякии штуки с полученным ответом
document.getElementById('answer').innerHTML=req.responseText
} else {
alert("Не удалось получить данные:\n" +
req.statusText);
}
}
}
</script>
|
что бы ещё поле URL передавалось! а то тут тока mail
просто я маил и урл передаю из 2х полей а передаётся почему то то маил :( | |
|
|
|
|
|
|
|
для: Panker
(14.07.2006 в 16:27)
| | и вчём собственно сложность?
строка
url = url +'?mail=' + document.forms.pages.mail.value;
|
формирует GET запрос, в сущности обычный web-адрес.
следовательно в форме добавляете input с именем (например) link
строка запроса меняется
url = url +'?mail=' + document.forms.pages.mail.value+'&link='+document.forms.pages.link.value;
|
| |
|
|
|
|
|
|
|
для: Crux
(15.07.2006 в 18:15)
| | А можно маленько поподробнее объяснить значение этих строчек?
if (req.readyState == 4) // только пр состоянии "complete"
|
и
| |
|
|
|
|
|
|
|
для: GлюК
(17.07.2006 в 03:07)
| | readyState
значения статуса (integer), может принимать следующие значения: 0 = неинициализирован (uninitialized); 1 = «идет загрузка» (loading); 2 = «загружен» (loaded); 3 = «интерактивен» (interactive) 4 = «выполнен» (complete)
т.е. ждём пока докумен загрузется.
status
стандартный HTTP код статуса, например 404 (для «Not Found») или 200 (для «OK»)
т.е. делаем проверку на безошибочное выполнение скрипта. | |
|
|
|
|
|
|
|
для: Crux
(17.07.2006 в 09:27)
| | Всё понял, спасибо! | |
|
|
|
|
|
|
|
для: Crux
(10.07.2006 в 15:10)
| | А меня такой вопрос интерисует:
Как быть, если у меня несколько форм? Не писать же для каждой формы свою функцию. Или писать?
и как подгрузить документ нажатием на ссылку?
Едит:
Про ссылку ненадо, сам разобрался
Едит:
Вопрос такого рода (пересекается с первым)
вот у меня есть такой код:
<div id="1">
бла бла бла бла бла
</div>
<div id="2">
бла бла бла бла бла
</div>
<div id="3">
бла бла бла бла бла
</div>
|
По идее, в каждом слое должна быть ссылка - нажимешь ее, и содержаение слоя изменяется. Но у всех слоев разный id. Как же быть? | |
|
|
|