0

我正在为一些自定义媒体审查目的开发 WordPress 系统插件。我已经设置了大部分东西,但还有一些。

目前我坚持点击更新数据库(onlink)以使用 AJAX 更新表值。参考下面的代码。它有 while 循环,我想在循环中使用 AJAX 来更新媒体状态。我不确定这是正确的方法,还是有另一种简单的方法可以实现。任何建议将不胜感激。

代码:

<?php
$media_item = mysql_query($media_sql);

if ($media_item) {

echo '<ul class="rm-media-list">'; 

    while ($media = mysql_fetch_array($media_item)) {

        $m_uid = $media['user_id'];
        $m_uname = $media['user_login'];

        $media_class = new q2a_review_media;
        $thumb_path = $media_class->rm_thumbnail_url($pid,$m_uid);
        $media_url = $media_class->rm_media_url($pid,$m_uid);
        $mediaid = $media['id'];
        $image_name = $media['image_name'];                                

        echo '<li>';
        echo '<span class="rm-media-user"><a href="'.admin_url( 'user-edit.php?user_id=' . $m_uid, 'http' ).'">',$m_uname,'</a></span>';
        echo '<a href="'.$media_url.$image_name.'" rel="lightbox['.$pid.']" title="Post: '.$pid.' |  '.$ptitle.' | Image: '.$image_name.' | by: '.$m_uname.' " ><img src="'.$thumb_path.$image_name.'" alt="'.$media['image_name'].'" width="56" class="rm-thumbs-list" /></a>';
        echo '<span class="rm-action-links"><a href="#" id="approve-'.$mediaid.'" >Approve</a> | <a href="#" id="delete-'.$mediaid.'" >Delete</a></span>';                            
        echo '</li>';
    }

} else {

    echo 'No media found';

}

echo '</ul>';                        
?>

数据库表: 在此处输入图像描述

我的插件页面输出 在此处输入图像描述

在上图中,您可以看到名为Approve|的链接 Delete在这里,我想使用 ajax 与数据库进行交互。当管理员点击它时,它会将列Approve中的值从 0 更新为 1,然后它将从目录中删除行和图像。希望我发布了足够的数据来理解。如果没有,请告诉我,我会尝试添加更多信息。statusDelete

百万谢谢.... :)

4

1 回答 1

2

首先,您的语句echo '</ul>';需要在if循环的一部分。

您的 AJAX 代码不必在 while 循环内。以下是您可以如何操作代码以发出 AJAX 请求。

让我们先稍微修改一下您的<a>标签:

<a href="#" class="approve-button" id="'.$mediaid.'">Approve</a>

此更改允许您拥有一组带有class="approve-button"id="the id of the item you want to approve"

现在,我们可以使用一些 JavaScript 来发出 AJAX 请求。为方便起见,我将使用 jQuery 发出此请求:

<script type="text/javascript">

//Attach an onclick handler to each of your buttons that are meant to "approve"
$('.approve-button').click(function(){

   //Get the ID of the button that was clicked on
   var id_of_item_to_approve = $(this).attr("id");

   Make an AJAX request
   $.ajax({
      url: "some-page.php", //This is the page where you will handle your SQL insert
      type: "post",
      data: "id=" + id_of_item_to_approve, //The data your sending to some-page.php
      success: function(){
          console.log("AJAX request was successfull");
      },
      error:function(){
          console.log("AJAX request was a failure");
      }   
    });

});

</script>

就目前some-page.php而言,这是您需要做的:

  • 拥有将更改数据库的 SQL 语句
  • 要访问附加到单击的批准按钮的 ID,您可以使用$_POST数组,因为 AJAX 请求的类型是“post”。具体来说,这是存储您的 ID 的位置:$_POST['id']

仅供参考:要在您的页面上导入 jQuery,您可以使用:

<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'></script>
于 2013-02-24T23:06:32.747 回答