我试图从用户获取数据并将其插入数据库,然后再次从同一数据库中获取所有新数据并添加到内容框。一切都很好,我得到的只是想要的数据。但是当我写帖子并点击提交按钮时,它会在数据库中插入数据,但不会添加新数据。但是当我再次写一篇新文章并点击提交时,它在"最后一篇文章"之前添加了"最后一篇文章",这意味着它正在使用1点击延迟。我试着检查console.log
,我在第一次点击和第二次点击上得到了完美的数据。那么这段代码中的问题是什么限制了它第一次添加数据?(我不知道问题的标题-_-所以如果有人能纠正,请做)
$(document).ready(function() {
$("#submit").click(function(e){
e.preventDefault();
var post = $("#s-content").val();
post = $.trim(post);
if (post=="")
{
$("#status-warning").show(100);setTimeout(function(){$("#status-warning").hide(100)},3000);
}
else
{
$.ajax({
type:"POST",
url:"process/post.php",
data:$("#post").serialize(),
cache:false,
success: function(data){
var request = $.ajax({
type:"GET",
url:"process/getNewPost.php?id=<?php echo $_SESSION['id']."&token=".session_id(); ?>",
/*success:function(data){
$("#all-posts").prepend(data);
console.log(data);
}*/
});
request.done(function(check){
console.log(check);
$("#all-posts").prepend(check);
});
/*var a='';
a += '<div><li style="white-space:pre;">';
a += $("#s-content").val();
a += '</li></div>';
$("#all-posts").prepend(check);*/
$("#s-content").val("");
$("#remove").remove();
});
}
});
});
我不确定这是否是你的问题的原因,但是你的解决方案太复杂了。
- 你不需要做两个ajax请求。你已经有了javascript中可用的变量,所以你可以使用这些来修改你的
#all-posts
部分在success
函数的第一个ajax调用。即使您没有所有可用的内容,您也应该让process/post.php
返回它,而不是向服务器发出新的请求。 你不需要在url中添加会话变量。只需在php中启动会话,您就可以使用它们。虽然这可能不再重要,因为第二个ajax调用是不必要的。