php - ajax issue - 数据前置/附加中的单击延迟

时间:2014-03-13 00:51:58

标签: php jquery ajax prepend

我试图从用户那里获取数据并将其插入数据库,然后再次从同一数据库中获取所有新数据并添加到内容框中。一切都很好,我只得到想要的数据。但是当我写帖子并点击提交按钮时,它会在数据库中插入数据,但不要预先添加新数据。但是当我再次写一篇新文章并点击提交时,它会在前一篇文章前面加上#34;意味着它正在使用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();
        });
    }
});
});

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您问题的原因,但您的解决方案不必要地复杂化。

  1. 您不需要发出2个ajax请求。您已经在javascript中提供了变量,因此您可以使用这些变量来修改第一个ajax调用的#all-posts函数中的success部分。即使您没有可用的所有内容,也应该process/post.php返回它,而不是向服务器发出新的请求。
  2. 您无需将会话变量添加到您的网址。只需在php中启动会话,您就可以使用它们。虽然这可能不再重要,因为第二次ajax调用是必要的。