В сети нашёл полно таких тем про чаты на ajax но ни один чат из них не работал, в итоге запутался окончательно со всем чем можно было... Но начну сначала... Задался целью создать чат на фреймах без перезагрузки страницы... С фреймовым окном все просто:
Код HTML:
<HEAD>
<meta http-equiv="content-type" content="text/html; charset=utf8" />
<TITLE>Название</TITLE>
<META NAME=Author CONTENT=Serg>
</HEAD>
<frameset rows="50%,50%" cols="100%">
<frame src="chat.php" name="chat" scrolling="yes" noresize>
<frameset cols="100%,*">
<frame src="submit.php" name="str" scrolling="yes" noresize>
</frameset>
<noframes><body bgcolor="#FFFFFF">
Ваш браузер не поддерживает фреймы
</body></noframes>
<body>
</body>
Так же удалось собрать скрипт отправки сообщения в базу и вывода его в этот же фрейм
Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Отправка формы</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function AjaxFormRequest(result_id,form_id,url) {
jQuery.ajax({
url: "form.php", //Адрес подгружаемой страницы
type: "POST", //Тип запроса
dataType: "html", //Тип данных
data: jQuery("#"+form_id).serialize(),
success: function(response) { //Если все нормально
document.getElementById(result_id).innerHTML = response;
},
error: function(response) { //Если ошибка
document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
}
});
}
</script>
</head>
<body>
<div style="border: 1px solid red; width: 220px; height: 80px; padding: 10px; position: relative;" id="result_div_id">
<br/>
</div>
<br/><br/>
<form method="post" action="form.php" id="form_id">
<?php echo"
to: <input type='text' name='name' id='name' value='' style='color:#1E3955; border:none; background-color:#AFD0F1; width:90px; font-weight:bold'>
<small><a href='#'' onclick=\"document.getElementById('name').value = '';return false;\">x</a></small>";
?>
</td>
<td>
<input name="txt" type="text" MAXLENGTH="1000" style="display:inline; width:100%" autocomplete="off">
</td>
<input type="button" value="Отправить" onclick="AjaxFormRequest('result_div_id', 'form_id', 'http://localhost/form.php')" />
</form>
</body>
И сам ajax запрос:
Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<?php
@$txt=$_POST['txt'];
$txt=trim(str_replace(' ', '', $txt));
require_once('cone.php');
if(!empty($_POST['txt']) and ($txt==!null)){
session_start();
$login = 'Undertaker';//$_SESSION['login'];
$log_pol=$_POST['name'];
$message=trim($_POST['txt']);
$mysql=mysql_query("INSERT INTO `chat` (`ip` ,`login` ,`login_pol` ,`date`,`message`)
VALUES ('$ip', '$login', '$log_pol', '$date','$message')")or die("Неудачник");
echo "$date-><strong>$login to $log_pol</strong>:$message";
}else{echo "Снова неудачник";}//}
?>
</head>
Но вот ума не приложу как осуществить вывод сообщение в фрейм "chat.php" без перезагрузки страницы для всех игроков...
Хотел сделать вывод сообщения не из базы (сразу из строки) но походу это невозможно, а как осуществить вывод из базы???