0

下面脚本的目的是允许用户发布新更新并在不刷新页面的情况下删除它们:这就是我使用 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>";     
} 
?>
4

2 回答 2

1

你必须更换

 <span class=\"delete_update\"><a href=\"#\" id=\"$postid;\">X</a></span>

 <span class=\"delete_update\"><a href=\"#\" id=\"$postid\">X</a></span> 
于 2013-06-11T02:33:22.957 回答
0

当您发布到堆栈溢出时,这可能只是一个简单的格式错误......但这部分应该......

foreach ($table as $row){
  $post= $row['post'];
  $postid = $row["postid"];
  ...rest of code  
}

不是...

 foreach ($table as $row);
  $post= $_POST['post'];
  $postid = $row["postid"];

{
于 2013-06-11T02:36:27.250 回答