我寫了一個非常簡單的評論系統的開頭。它使用jQuery/AJAX/PHP MySQL。到目前爲止它工作正常。但是,一旦提交評論,您必須刷新頁面才能顯示評論。它如何顯示在提交。ajax評論顯示在提交w/out頁面刷新
我希望這裏沒有太多的代碼,但這裏有三個部分。 jQuery/php插入評論查詢/ php選擇評論查詢。
的jQuery/AJAX:
$(document).ready(function() {
$('#button').click(function() {
var name = $('#name').val();
var comment = $('#comment').val();
if(name == '' || comment == '') {
$('#comment_messages').html('Please enter both fields');
} else if(name !== '' || comment !== '') {
$('#comment_messages').html('');
$.ajax({
type: 'POST',
url: 'comments.php',
data: 'name='+name+'&comment='+comment,
success: function(data) {
$('#comments_area').append(data);
}
});
}
});
});
PHP INSERT(插入註釋):
<?php
include('init.inc.php');
if(isset($_POST['name'], $_POST['comment'])) {
$name = $_POST['name'];
$comment = $_POST['comment'];
if(!empty($name) && !empty($comment)) {
$query = mysql_query("INSERT INTO comments VALUES(NULL, '$name', '$comment', CURRENT_TIMESTAMP)");
if($query === true) {
// right here is what is being returned to success: function(data) in the ajax script. What's the best way to return the comment here?
} else {
echo 'Hmmm... that\'s odd........';
}
} else {
echo 'Please enter both fields';
}
}
?>
PHP SELECT(檢索評論):
<?php
$query = mysql_query("SELECT * FROM comments ORDER BY time DESC LIMIT 10");
$num = mysql_num_rows($query);
if($num >= 1) {
while($fetch = mysql_fetch_assoc($query)) {
$name = $fetch['name'];
$comment = $fetch['comment'];
$time = $fetch['time'];
?>
<div id="user_comments">
<?php echo $name; ?> said at: <span id="time_stamp"><?php echo $time; ?></span><p>- <?php echo $comment; ?>
</div>
<?php
}
}
?>
UPDATE:
個新增兩行底部:
$(document).ready(function() {
$('#button').click(function() {
var name = $('#name').val();
var comment = $('#comment').val();
if(name == '' || comment == '') {
$('#comment_messages').html('Please enter both fields');
} else if(name !== '' || comment !== '') {
$('#comment_messages').html('');
$.ajax({
type: 'POST',
url: 'comments.php',
data: 'name='+name+'&comment='+comment,
success: function(data) {
$('#comments_area').append('<b>'+name+'</b><p>- '+comment);
$('#comment_messages').html(data);
}
});
}
});
});
好主意。但是你應該創建SUCCES/FAILURE結構,那麼對嗎?原因不會成功加載頁面,即使註釋失敗被插入到數據庫中? :) –
你應該返回PHP頭,如果成功則返回200,如果失敗則返回4xx。這樣,它不會最終在成功 –
我喜歡這種方法。我還在您建議的代碼行下面添加了SUCCESS/FAILURE(成功/失敗)(參見更新)。這是可擴展/安全/常見的做法嗎?它似乎會在append()標籤中變得非常混亂。它似乎有點混亂。 – Graham