2010-08-03 120 views
2

我想在一段時間內混淆jQuery和Ajax。如何構建Ajax評論系統?

對於我的第一個問題,我想創建一個輸入框,輸入我的評論,然後評論將出現在下面。沒有頁面刷新。我怎樣才能做到這一點?

回答

2

基本的想法是,你將有一個客戶端頁面的textarea或輸入。將.click附加到提交按鈕,並且.click將通過.ajax調用服務器端腳本。

客戶端:

<script type="text/javascript"> 
    $(document).ready(
    $('#submit').click({ 
     $.ajax({ 
       type=POST, 
       data: "comment="+$("#comments").val(), 
       dataType: json, 
       url: 'somePage.php', 
       success: function(data) { 
        if(data.error){ 
         alert("server reported error"); 
        }else{ 

         $('#postedComments').append(data); 
        } 
       } 
       }); 


    }); 


}); 
</script> 
<div id="postedComments></div> 
<textarea id="comments"></textarea> 
<input type="submit" id="submit" value="Post Comment" /> 

服務器端:

<?php 
    if(isset($_POST['comments'])){ 
     //perform Database insert of value $_POST['comments'] 
     if(<database error>){ 
      echo json_encode(array('error'=>'-1')); 
     }else{ 
      echo json_encode(array('success'=>'1')); 
     } 
    } 
?> 

基本上當客戶點擊提交時,阿賈克斯上崗 「意見」 的服務器端腳本。該腳本然後處理請求並以json編碼返回錯誤或成功報告,這就是ajax調用成功的方式,您可以確定服務器調用發生了什麼。 Ajax成功並不成功,它只是表明服務器迴應了,這就是爲什麼你可以編碼一些消息發送回客戶端腳本,以確定服務器是否迴應錯誤或成功的消息。

+0

謝謝!如果我使用這個if ---- 有沒有唯一的Ajax/JQuery的方式?我還沒有學習PHP,所以我試圖避免使用PHP。 – omnix 2010-08-03 12:28:06

+0

你可以單獨使用jQuery來做到這一點,但是如果你關閉瀏覽器並開始一個新的會話,你的數據將不會持久。此外,當客戶端A訪問本網站併發布評論時,客戶端B將看不到客戶端A的評論,而客戶端B的評論不會被客戶端A看到。因此,您需要某種方式來保存數據,這就是爲什麼我要提供服務器端代碼的原因。 僅僅對於jQuery的客戶端來說,它將與發佈ajax調用時的功能相同。簡單做 $(「#submit」)。click(function(){$(「#postingComments」)。append($(「#comments」).val());}); – Chris 2010-08-03 12:48:18

+0

好的,謝謝克里斯,你是一個很大的幫助! – omnix 2010-08-03 12:53:36

0

您應該將post的輸入框內容發送到服務器,並且append它對從服務器獲得成功消息的評論。

+0

好吧我瞭解並查看了jQuery指南。我可以有更多的代碼示例嗎? – omnix 2010-08-03 12:18:50

+0

@kawoki看到我的評論下面的一些代碼:-) – Chris 2010-08-03 12:26:15

0

我已經構建了一個類似於WordPress的jQuery驅動的ajax評論系統。創建/刪除操作全部由ajax驅動。

我通過手動執行$ .post()操作來創建註釋,$ .get()來刪除註釋。