Доброго всем дня. Сразу хочу извиниться за возможную неполную информативность поста, первый раз создаю топик с зовом о помощи, ибо уже 2 второй день не могу понять, в чем собственно подводный камень. Итак, делалось что-то на подобии чата/тикет-системы, вобщем с автообновлением сообщений раз в пару секунд ( но как оказалось, что никакой интервал корректно не работает). Вроде все просто, все логично по действиям (ну по крайней мере я вижу его таким).
var time;var timer;
function ajax_post_send(text,id,status,el){
var hash=document.getElementById('send_hash').value;
clearTimeout(timer);
date=new Date(); time=(date.getTime()/1000).toFixed();
$.ajax({
url: "modules/support2.php?",
type: "POST",
data: "ticket_text="+text+"&topic_id="+id+"&is_starter=0"+"&status="+status+"&hash="+hash,
cache: false,
success: function(){
update_ticket();
}
});
}
function update_ticket(){
$.ajax({
url: "modules/ticket_system.php?ticket=<?php echo $_GET['open_ticket'];?>&update_ticket&update_time="+time,
cache: false,
success: function(data){
if(data!=false){
document.getElementById('block1').children[0].children[0].children[0].innerHTML+=data;
date=new Date(); time=(date.getTime()/1000).toFixed();
}
}
});
timer=setTimeout(function(){update_ticket();},3000);
}
Обрывок из ticket_system.php
if(mysql_num_rows($query=mysql_query("SELECT * FROM `admin_panel`.`tickets` WHERE `topic_id`='{$_GET['ticket']}' AND UNIX_TIMESTAMP(date)>='$time' and `is_starter`='0'"))>0){
while($row2=mysql_fetch_array($query))
{
include('html/ticket_inner_main.php');
}
} else {
Схема действия такая, что страница по дефолту обновляется каждые 3 секунды, при отправке сообщения ( ajax_send_post) происходит стоп таймера, выимка времени отправки, ее передача в php. Затем запуск опять обновления тикета, который должен сверить время и вывести согласно запросу все добавленные публикаци.Все. Вроде все логично. Все должно работать. Оно работает... но раз в 5-10 попыток отправки после отправления выдает дабл-сообщения (после обновления оно пропадает, то бишь это косяк AJAX, нежели в БД внесся лишний пост). Собственно, господа, очень нуждаюсь в Вашей подсказке, с чем может быть это связано. Повторю свое вступление, что возможно что-то неполно выложил, т.ч. что ни спросите-дополню. Спасибо заранее Вам.