Сделал с помощью различных статей простенький чат и он работает, но узнал про json, решил переделать чат на новый лад. Но появилась проблема: сообщения выводятся, добавляются в базу, но приходится обновлять страницу вручную, чтобы появились новые сообщения, подскажите пожалуйста, что надо исправить. Вот код:
js код
$(document).ready(function(){
$(".send_mess").keydown(function(){
if (event.keyCode == 13) { Send(); };
})
$(".send_mess").focus();
setInterval("Load();", 2500);
});
var nick = "friend";
function Send(){
$.ajax({
type: "POST",
url: "ajax.php",
data: {
action : "send",
name : nick,
message : $(".send_mess").attr('value')
},
dataType: "json",
success: Load()
});
$(".send_mess").attr('value', '');
$(".send_mess").focus();
return false;
}
var lasr_message_id = 0;
var load_in_process = false;
function Load(){
if (!load_in_process){
load_in_process = true;
$.ajax({
type: "POST",
url: "ajax.php",
data: {
action : "load",
last : lasr_message_id
},
dataType: "json",
success: function (result){
eval(result.text);
eval(result.id);
$("#point_chat_div").scrollTop($("#point_chat_div").get(0).scrollHeight);
load_in_process = false;
}
});
}
}
ajax.php
require "php/db_right.php";
mysql_connect($way_db, $login_db, $password_db);
mysql_select_db($point_db);
mysql_query("SET NAMES 'utf8'");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/javascript; charset=utf-8");
if( isset($_POST['action']) ){
switch ($_POST['action']){
case "send" : Send(); break;
case "load" : Load(); break;
default : exit();
}
}
function Send(){
$name = substr($_POST['name'], 0, 200);
$name = htmlspecialchars($name);
$name = mysql_real_escape_string($name);
$text = substr($_POST['message'], 0, 200);
$text = htmlspecialchars($text);
$text = mysql_real_escape_string($text);
mysql_query("INSERT INTO chat (name,text) VALUES ('" . $name . "', '" . $text . "')");
}
function Load(){
$last_message_id = intval($_POST['last']);
$query = mysql_query("SELECT * FROM chat WHERE ( id > $last_message_id ) ORDER BY id DESC LIMIT 20");
if( mysql_num_rows($query) > 0 ){
$messages = array();
while ( $row = mysql_fetch_array($query) ){
$messages[] = $row;
}
$last_message_id = $messages[0]['id'];
$messages = array_reverse($messages);
$js = array();
$js['id'] = "lasr_message_id = ". $last_message_id .";";
foreach ( $messages as $value ){
$js['text'] .= '$("#chat_message").append("<span>' . $value['name'] . '» ' . $value['text'] . '</span>");';
}
}
echo json_encode($js);
}