下面脚本的目的是允许用户发布新更新并在不刷新页面的情况下删除它们:这就是我使用 AJAX 的原因。
有2个故障:
当用户发布更新时,它会正确保存在数据库中,并且正确的更新会在我的表格中向下滑动,但是当我查看源代码时,我可以看到错误的 postid 被回显(它始终是下面几行中的 postid在数据库中)。
当用户删除帖子时,前端没有任何反应: tr 不会向上滑动,但该行确实在数据库中被正确删除。
PHP部分:
echo "<table id=\"update_list\">
<tr class=\"cell$postid\">
<td>$post
<div id=\"delete\">
<span class=\"delete_update\"><a href=\"#\" id=\"$postid;\">X</a></span>
</div>
<hr>
</td>
</tr>
</table>";
AJAX部分:
<script type="text/javascript">
$(function() {
$("#addpost_button").click(function()
{
var element = $(this);
var boxval = $("#status").val(); // #status is the ID of the input where the users type in updates
var dataString = 'post='+ boxval;
if(boxval=='')
{
alert("Please Enter Some Text");
}
else
{
$("#flash").show();
$.ajax({
type: "POST",
url: "update_post.php",
data: dataString,
cache: false,
success: function(html){
$("#cell").prepend(html);
$("#update_list tr:first").slideDown("slow");
document.getElementById('post').value='';
$("#flash").hide();
}
});
}
return false;
});
$('.delete_update').live("click",function()
{
var ID = $(this).attr("id");
var dataString = 'postid='+ ID;
if(confirm("Sure you want to delete this post? "))
{
$.ajax({
type: "POST",
url: "delete_post.php",
data: dataString,
cache: false,
success: function(html){
$(".cell"+ ID).slideUp('slow', function() {$(this).remove();});
}
});
}
return false;
});
});
</script>
任何帮助都感激不尽!
编辑:来自 update_post.php 的代码:
<?php
include "includes/config.php";
if(isset($_POST['post']))
$table=query("INSERT INTO postlist (id, postid, post) VALUES (?, ?, ?)",
$_SESSION["id"], '', $_POST["post"]);
$table = query("SELECT post, postid FROM postlist WHERE id = ? ORDER BY postid DESC",
$_SESSION["id"]);
foreach ($table as $row){
$post=$_POST['post'];
$postid = $row["postid"];
echo "<table id=\"update_list\">
<tr class=\"cell$postid\">
<td>$post
<div id=\"delete\">
<span class=\"delete_update\"><a href=\"#\" id=\"$postid;\">X</a></span>
</div>
<hr>
</td>
</tr>
</table>";
}
?>