Пишу чат на пхп + ajax, сначала писал на фреймах, но мне подсказали что лучше писать на дивах, т.к. это красивее и удобнее.
Если можно, то буду писать сюда проблемы которые встречаются у меня)) Да и многим возможно пригодится что нить.
Появилась такая проблема. Не могу сделать запрос на AJAX для того чтобы сообщения приходили асинхронно...
Т.е. Отправил юзер сообщение - у всех сразу же оно появилось.
Что делает скрипт:
<div id="main">
<div id="top"><?php include('top.php'); ?></div>
<div id="head"><?php include('head.php'); ?></div>
<div id="users"><?php include('users.php'); ?></div>
<div id="send"><?php include('down.php'); ?></div>
</div>
id:
top - верхний див
head - выводит сообщения юзеров.
users - вывод юзеров он лайн.
send - форма отправки сообщений, добавление сообщений в базу.
в head.php (div id=head) такой код, выводящий сообщения из базы:
<?
# делаем запрос в базу - выбираем сообщения и сортируем по последнему сообщению
$result2 = mysql_query("SELECT * FROM message ORDER by id+0", $db);
# Выводим все в цикле "время -> ник -> сообщение"
while($myrow = mysql_fetch_array($result2))
{
$nick = $myrow['nick'];
echo "<b>".$myrow['time']."</b> <font color=yellow>»</font> <u><b>
<a href=# onClick=\"document.getElementById('mess').value = '".$nick.": '; \">".$nick."</a></b></u>: <span id=\"in_wrap\">".$myrow['message']."</span><br>\n";
}
?>
Дальше идёт ajax код который должен обновлять сообщения при поступлении новых сообщений:
<script type="text/javascript">
{
$.ajax({
url: "head.php",
cache: false,
success: function(html){
$("#head").html(html);
}
});
}
</script>
естественно библиотека jQuery подключена, код пашет, но не так как нужно.
Отправляешь сообщение, ты видишь что оно появилось, но другие нет, пока не обновят страницу или не отправят сами сообщение.