Показать сообщение отдельно
  #1 (permalink)  
Старый 16.04.2013, 19:15
Новичок на форуме
Отправить личное сообщение для logovazzik Посмотреть профиль Найти все сообщения от logovazzik
 
Регистрация: 16.04.2013
Сообщений: 4

Проблема с AJAX
Доброго всем дня. Сразу хочу извиниться за возможную неполную информативность поста, первый раз создаю топик с зовом о помощи, ибо уже 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, нежели в БД внесся лишний пост). Собственно, господа, очень нуждаюсь в Вашей подсказке, с чем может быть это связано. Повторю свое вступление, что возможно что-то неполно выложил, т.ч. что ни спросите-дополню. Спасибо заранее Вам.

Последний раз редактировалось logovazzik, 16.04.2013 в 19:18.
Ответить с цитированием