@kostarus61

Выполнение JS скрипта после отправки ajax формы?

Всем доброй ночи!
Вообщем такая проблема. Есть форма на ajax, отправляется без перезагрузки. После успешной отправки блок div с формой обновляется так же без перезагрузки. После обновления блока должен сразу появляться таймер, но он не появляется пока не перезагружу страницу полностью. Код длинный поэтому вырежу основные куски, для понятности.

Извиняюсь за код но с табуляцией не сохраняется, уже 20 раз пробовал редактировать.

Форма с кнопкой:
echo "<div class='block_tab_id' id='loadA_".$post['id']."'><div class='block_tab_id' id='loadB_".$post['id']."'>";
	echo "<table class='block_tab_plant' width='158' height='150'>";
	echo "<tr height='40'><td align='center' valign='middle'>";
	if($post['time']>$time){
		$p1 = $post['time']-$time;
		$p2 = $post['id'];
		$p3 = $post['id'];
		print "<br><span class='text_gr' id='".$p2."'><script>timer_tp($p1,$p2,$p3)</script></span>";
	}
	echo "</td></tr><tr height='40'><td align='center' valign='middle'>";

	if($post['time']<=$time){
		echo "<form action='' method='post' id='form3'><input type='hidden' name='har' value='".$post['id']."'><input type='submit' value='Отправить' class='btn_small'></form>";
	} else {
		// Код другой формы
		}
echo "</td></tr></table></div></div>";


Обработчик формы:
$(document).ready(function(){
	var n;
	$('#form3').live('submit', function(){
		var current = $(this).parent().parent();
		var data = $(this).serialize();
		data += '&ajax-request=true';
		
		$.ajax({
			type: 'POST',
			url: '/ajax/har.php',
			dataType: 'json',
			data: data,
			success: (function() {
				return function(data) {
					if (data.status === 'success') {
						setTimeout("jQuery('#loadA_" + data.id + "').load('#div #loadB_" + data.id + "');",0);
					}
					
					if(n) {
						n.setText('<b>' + data.message + '</b>');
						n.setType(data.status);
					} else {
						n =	noty({
							text: '<b>' + data.message + '</b>',
							type: data.status,
							dismissQueue: false,
							killer: true,
							layout: 'topCenter',
							theme: 'defaultTheme',
							timeout: 5000,
							callback:  {
								afterClose: function() {n=null;}
							}
						});
					}
				};
			})()
		});
		return false;
	});
});


JS скрипт таймера:
function timer_tp(c,DivId,id){
	var timerdiv = document.getElementById(DivId);
	if (timerdiv == null) {
		clearTimeout(this); return;
	}
	if(c<0) c=0;
	Seconds = c;
	Hours = Math.floor(Seconds / 3600);
	Seconds -= Hours * (3600);
	if(Hours < 10) {Hours = "0" + Hours}
			
	Minutes = Math.floor(Seconds / 60);
	Seconds -= Minutes * (60);
	if(Minutes < 10) {Minutes = "0" + Minutes}
			
	Seconds = Math.floor (Seconds);
	if(Seconds < 10) {Seconds = "0" + Seconds}

	timerdiv.innerHTML = Hours + ":" + Minutes + ":" + Seconds;

	if(c<=0) {
		clearTimeout(this);	
		setTimeout("jQuery('#loadA').load('#div #loadB');",0);
	}else{		
		c-=1;
		setTimeout(function(){timer_tp(c,DivId,id)},1000);
	}
		
}


Нужно что бы этот JS скрипт выполнялся без перезагрузки страницы, т.е сразу после нажатия на кнопку в блоке появлялся таймер. Возможно ли это, или обязательно нужно перезагружать страницу?

Код выложил наверно зря так как все обращают внимание на форматирование кода а не на сам вопрос. Единственный вопрос как вызвать JS функцию из ajax обработчика, возможно ли это и если возможно то дайте пожалуйста пример.
  • Вопрос задан
  • 3657 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Elizavetta
Matroid: gamedev/js-разработка
Доброй ночи. По вашему коду чувствуется, что проблема не в том, что вы спрашиваете. php-код и верстка вместе - это же жесть, и научитесь форматировать по-человечески. Я советую классическую подготовку по программированию, тогда любое jQuery пойдет легко.
Ответ написан
cha-cha
@cha-cha
Выкиньте весь этот бред, научитесь пользоваться php шаблонизаторами (twig), и откройте для себя чудесный мир jQuery документации.
Ответ написан
@kostarus61 Автор вопроса
Дело не в самом коде. Люди пожалуйста подскажите хотя бы возможно ли вообще вызвать JS функцию которая выполняется в браузере пользователя из ajax, т.е. чтобы она вызывалась из ajax обработчика формы? А то все предыдущие комментарии из за моего кода. Не могу я пока писать код лучше думаю и вы в 13 лет писали не лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы