2015-09-07 75 views
0

我有一个用户可以发布问题的网页,问题已发布,并且成功响应将文本附加到div'您发布的问题'。然后div在1秒后消失。为ajax调用运行setTimeout多次

如果用户发布第二个问题(不刷新页面),则该问题已成功插入数据库,但文本不附加到div。

我是否需要在每次用户发布时清除超时?

$(document).ready(function(){ 
    $('#postquestion').on('submit',function(e) { 
     $.ajax({ 
      url:'/question.php', 
      data:$(this).serialize(), 
      type:'POST', 
      success:function(data){   
       if($.trim(data) == "success") { 
        $('<div align=\"center\" style=\"padding-top:10px\"><p style=\"font-weight:bold;font-size:14px\">Your question has been posted.</p></div>').appendTo('#product_question'); 
        setTimeout(function() { 
         $('#product_question').fadeOut('fast'); 
        }, 1000); 
       } 
      }, 
      error:function(data){ 
       $("#error").show().fadeOut(5000); 
      } 
     }); 
     e.preventDefault(); 
     return false; 
    }); 
}); 
+0

,然后刷新页面后会发生什么?第二个问题出现了吗? – Sina

+0

yeh它显示刷新页面 – user3312792

+0

后,但应显示'您的问题已发布'的文本不显示第二次 – user3312792

回答

0

看起来像你的DIV调用淡出你追加的消息,所以当它回来了一轮格仍时隐时其附加文本

也删除从DOM后的股利在淡出将确保只有在DOM这些div的一个过一次

$('<div id=\"test\" align=\"center\" style=\"padding-top:10px\"><p style=\"font-weight:bold;font-size:14px\">Your question has been posted.</p></div>').appendTo('#product_question'); 
setTimeout(function() { 
    $('#test').fadeOut('fast').remove(); 
}, 1000); 
+0

是这就是我认为正在发生的事情,如何解决这个问题? – user3312792

+0

我粘贴的代码应该可以工作,也许更改id的名字 - 但是应该修复它 – Michael

0

看起来像问题是第二次它不能应用,因为你的'#product_question'是隐藏的。或者,当用户发布第二个问题时,或许你有多个'#product_question'?也许你应该尝试使用类'product_question'而不是id? '.product_question'和'#product_question'是你的风格。

+0

刚刚尝试使用类,相同的问题 – user3312792

0

伴侣,我想你使用太多的代码在那里。有一个隐藏的div为:

<div id="test" class="myclass" align="center" style="padding-top:10px; display:none;"><p style="font-weight:bold;font-size:14px;">Your question has been posted.</p></div> 

,然后将其显示在您的回电:

if($.trim(data) == "success") { 

$('.myclass').css('display','block'); 

setTimeout(function() { 
    $('.myclass').fadeOut('fast'); 
}, 1000); 

}