2014-03-13 56 views
0

我試圖從用戶獲取數據並將其插入到數據庫中,然後再次從同一數據庫中獲取所有新數據並將其前置到內容框中。一切都很好,我只得到想要的數據。但是,當我寫後,然後單擊提交按鈕它將數據插入數據庫中,但不要預先添加新的數據。但是當我再次寫一篇新文章並點擊提交時,它會在前面加上「最後一篇文章」意味着它正在使用一個點擊延遲。我試圖與console.log檢查,我得到了第一次點擊以及第二次點擊完美的數據。那麼這個代碼中的問題是什麼限制了它第一次添加數據呢? (我不知道的問題標題-_-因此,如果任何人都可以改正的,請你)php - ajax問題 - 數據預加/附加一鍵延遲

$(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(); 
     }); 
    } 
}); 
}); 

回答

0

我不知道這是否是你的問題的原因,但你的解決方案是不必要的複雜。

  1. 您不需要發出2個Ajax請求。您已經有了javascript中的變量,因此您可以使用這些變量修改您的第一個ajax調用的success函數中的#all-posts部分。即使你沒有一切可用,你也應該有process/post.php返回它,而不是向服務器發出新的請求。
  2. 您不需要將會話變量添加到您的網址。只需在php中啓動會話,您將可以使用它們。雖然這可能無關緊要,因爲第二次Ajax調用是不必要的。
+0

2.該會話變量和id僅用於「show」。 (操作xD):P:D 和 1.我想從另一個不同的php文件中獲取數據。那麼我怎麼能在單個Ajax請求中做所有的處理? 而我之所以使用另一個PHP文件 - 當用戶A發佈他的帖子,同時用戶B也發佈了一些內容時,我需要顯示這兩個帖子。所以我無法從'process/post.php'獲取數據,因爲它只顯示單個帖子,我需要獲取所有新數據,這就是爲什麼我使用另一個PHP文件。 – user3314428

+0

@ user3314428只需在'process/post.php'結尾包含'process/getNewPost.php'。如果您在上次更新的會話中存儲時間戳記,則只能獲取在該時間戳記之後添加的記錄,無論是誰發佈的。 – jeroen

+0

嗯好主意..是的,我在會話變量中存儲時間戳。我會盡力讓你知道..你確定這會解決我的主要問題嗎? – user3314428