Всем доброй ночи!
Вообщем такая проблема. Есть форма на 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 обработчика, возможно ли это и если возможно то дайте пожалуйста пример.