运行 setTimeout 多次 ajax 调用
running setTimeout multiple times for ajax call
我有一个网页,用户可以在其中 post 提问,问题是 posted 并且在成功响应时将文本附加到 div 'your question was posted.' 然后div 1 秒后消失。
如果用户 post 提出第二个问题(没有刷新页面),问题会成功插入数据库,但文本不会附加到 div。
每次用户post秒我都需要清除超时吗?
$(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;
});
});
看来问题是第二次申请不了,因为你的'#product_question'被隐藏了。或者,当用户发布第二个问题时,您可能有多个“#product_question”?也许您应该尝试使用 class 'product_question' 而不是 id? '.product_question' 与 '#product_question' 是您的样式。
看起来你在 div 上调用 fadeOut,你正在将消息附加到,所以当它返回时 div 在附加文本时仍然隐藏
还在淡出后从 dom 中删除 div 将确保在 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);
伙计,我猜你在其中使用了太多代码。有一个隐藏的 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);
}
我有一个网页,用户可以在其中 post 提问,问题是 posted 并且在成功响应时将文本附加到 div 'your question was posted.' 然后div 1 秒后消失。
如果用户 post 提出第二个问题(没有刷新页面),问题会成功插入数据库,但文本不会附加到 div。
每次用户post秒我都需要清除超时吗?
$(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;
});
});
看来问题是第二次申请不了,因为你的'#product_question'被隐藏了。或者,当用户发布第二个问题时,您可能有多个“#product_question”?也许您应该尝试使用 class 'product_question' 而不是 id? '.product_question' 与 '#product_question' 是您的样式。
看起来你在 div 上调用 fadeOut,你正在将消息附加到,所以当它返回时 div 在附加文本时仍然隐藏
还在淡出后从 dom 中删除 div 将确保在 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);
伙计,我猜你在其中使用了太多代码。有一个隐藏的 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);
}