|
|
|
|
|
для: bronenos
(02.05.2007 в 05:35)
| | Не могу понять, зачем использовать аякс с фреймами, это вещи, друг друга взаимоисключающие. Зачем эти фреймы нужны, если сообщения можно сразу выводить на страницу? К тому же броузеры ифреймы блокируют. Если каждое новое сообщение выводить вверх страницы, то никаких прокруток не нужно.
...а данные каждого сообщения при помощи split ('\t') - можно подробней? Что здесь понимается под данными? Это имеется ввиду табуляция строки по длине? | |
|
|
|
|
|
|
|
для: coloboc66
(02.05.2007 в 00:20)
| | неправда. я пишу чат, без хвастовства говорю, успешно
у меня 3 ифрейма, потому что если делать без них, то сообщения и список пользователей всю страницу опустят вниз, их надо делать с прокруткой
от дом я тоже отказался
в ответе с сервера я первой строчкой пишу md5 хэш всех сообщений и потом сравниваю его с последним полученным
если отличается, то разбиваю сообщения которые идут на следующих строках с помощью split ('\n'), а данные каждого сообщения при помощи split ('\t')
о доме можно забыть! только лишние проблемы с совместимосью! | |
|
|
|
|
|
|
|
для: shkryab
(01.05.2007 в 23:49)
| | При работе с аяксом нужно полностью отказаться от фреймов и от рефрешей. И начать заново изучать ява-скрипт и DOM. Такая вот беда... | |
|
|
|
|
|
|
|
для: Staglu
(01.05.2007 в 23:48)
| | meta надо в таком случае ваще убрать, да и фреймы тоже не нужны... Чат ниразу не писал и не видел ни одного кода чата :) но думаю, что необходимо через некоторые интервалы времени обращаться к скрипту на сервере, передавая ему о сообщении которое являеться последним или сообщение клиента в соответствии с этим в скрипте должен формироваться ответ, который буде обрабатываться на клиенте. | |
|
|
|
|
|
|
|
для: coloboc66
(01.05.2007 в 23:42)
| | Дык на сколько я понял вопрос стоял о том как по средствам AJAX-а обменяться данными между клиентом и сервером. Это я и попытался объяснить как можно более кратко и полно. Надеюсь получилось... | |
|
|
|
|
|
|
|
для: coloboc66
(01.05.2007 в 23:42)
| | Что мне делать, у меня работает только с помошью <meta> тега кажде 5 секун происходит обновления. Можно сделать так, чтобы данные не обновлялись всей страницей, а докачивались только те которые только которые новые. | |
|
|
|
|
|
|
|
для: Staglu
(01.05.2007 в 23:36)
| | Всмысле добавиться? То что в файле будет выводиться на страницу (echo или теги вне скрипта) будут содержаться в ответе от сервера. Сам скрипт может свершать какие угодно действия. | |
|
|
|
|
|
|
|
для: shkryab
(01.05.2007 в 23:29)
| | Все не так просто, как кажется:аякс - это только средство связи между клиентом и броузером. А обработку данных нужно делать либо на РНР на сервере, либо и на сервере и в броузере с помощью ява-скрипт. Здесь так просто никто не поможет, если только не отдаст свой собственный готовый скрипт чата. | |
|
|
|
|
|
|
|
для: shkryab
(01.05.2007 в 23:29)
| | Спаибо, понял!!! А если информация в файле qwerty.php добавиться, то и в 1.html она тоже отоброзиться. И некаких обновленний страници 1.html делать не нужно??? Я праильно вас поня??? | |
|
|
|
|
|
|
|
для: Staglu
(01.05.2007 в 23:01)
| |
var req;
function loadXMLDoc(url,data)
{
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=cp1251");
req.send(data);
}
else if (window.ActiveXObject)
{
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req)
{
req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=cp1251");
req.send(data);
}
}
}
function processReqChange()
{
if (req.readyState == 4)
{
if (req.status == 200)
{
//всякие действия с полученными данными например:
document.getElementById('elem').innerHTML=req.responseText;
}
else
{
alert("Не удалось получить данные:\n" + req.statusText);
}
}
}
|
Ответ от сервера будет находиться в req.responseText. В нем будет содержаться то, что в php скрипете выводилось на экран (echo "бла бла бла" - бла бла бла и будет содержаться в req.responseText). Параметры функции loadXMLDoc(url,data):
url - файл на сервере к которому Вы обращаетесь;
data - данные которые передаёте на сервер.
Переданные данные будут находиться в массиве $_POST[]. Данные должны передаваться в виде переменная=значение.
К примеру:
В файле 1.html вызываеться функция
...
loadXMLDoc("qwerty.php","msg=12345")
...
|
файл qwerty.php содержит такое:
...
echo $_POST[msg];
...
|
тогда ответ от сервера (который содержиться в req.responseText) будет содержать текст "12345". | |
|
|
|
|