2013-10-31 49 views
-2

我試圖在動態頁面上設置註釋系統,其中用戶輸入自動加載到頁面上而不重新加載。
JavaScript處理PHP代碼而無需重新加載

<form action="" method="post"> 
<textarea name=comment"></textarea> 
<input type="submit" class="submit" name="submit" value="SUBMIT"> 
</form> 

在提交時,PHP提交用戶輸入到數據庫中,然後在一個div在頁面上回蕩。我試過使用一些Ajax,JavaScript和jquery函數,但頁面仍然在提交時重新加載。 處理提交冷凝PHP代碼是

$comment = $_POST['comment']; 
$id = $_GET['id']; 
sql = "INSERT INTO comments (id, comment) VALUES ('$id', '$comment')"; 
mysql_query($sql, $connect); 
Header("Location: ".$_SERVER['PHP_SELF'].'"); 

那麼對於顯示的意見

$sql = "SELECT * FROM comments"; 
while ($record = mysql_fetch_array($myData)){ 
echo "<div>".$record['comment'].'</div>'; 
} 

我需要某種形式的代碼,自動更新,無需註釋的刷新。我不知道如果用戶做了手動重新加載,「Header('Location'...」部分是否存在以防止重新提交表單,我不知道這是否會干擾其他腳本或不。

聲明:我會很快切換事情的MySQLi我需要這個工作,首先如果你們需要任何更多的信息,我會適當地更新查詢感謝

+1

在切換到MySQLi之前,請在您的代碼中插入'mysql_real_escape_string()'!你有嚴重的安全漏洞! – ComFreek

+0

這是一個很好的開始:http://api.jquery.com/jQuery.ajax/ –

+0

我知道關於mysql_real_escape_string。我已經確定我的代碼不受注入的影響,但正如我所說的,所有內容都是爲了可讀性而精簡的。 – Zach

回答

2

服務器端:。

$output = array(); 
.... 
while ($record = mysql_fetch_array($myData)) { 
    $output[] = $record; 
} 
echo json_encode($output); 

客戶端:

注意:這需要jQuery

<a href="#" id="update-comments">Update</a> 
<div class="comments"></div> 
<script language="javascript"> 
$('#update-comments').click(function (event) { 
    event.preventDefault(); 
    $.ajax({ 
     url: 'URL TO YOUR BACKEND', 
     type: "GET", 
     cache: false, 
     success: function (json) { 
     $('.comments').html(''); 
     var comments = JSON.parse(json); 
     $.each(comments, function (i, item) { 
      $('.comments').append('<div class="comment">' + item.comment + '</div>'); 
     }); 
    } 
    }); 
}); 
</script> 

基本上你有一個按鈕,啓動了一個jQuery $.ajax呼籲您的服務器上的資源GET從JSON格式的數據庫返回一個多維數組的結果。 AJAX調用起作用後,將通過$.each對每個註釋在名爲.comments的容器中附加<div>

相關問題