我正在为WordPress系统开发一个插件,用于某些自定义媒体审查目的。我已经设置了大部分内容,但还有更多。
目前我坚持使用AJAX来更新数据库(onlink)以更新表值。请参阅以下代码。它有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
时,它会在status
列中将值从0更新为1,当Delete
时,它将删除目录中的行和图像。希望我发布足够的数据来理解。如果没有,请告诉我,我会尝试添加更多信息。
百万感谢.... :)
答案 0 :(得分: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
而言,这就是你需要做的事情:
$_POST
数组,因为AJAX请求的类型为“post”。具体而言,这是您的ID存储位置:$_POST['id']
仅供参考:要在您的页面上导入jQuery,您可以使用:
<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'></script>