1 回答

TA贡献1893条经验 获得超10个赞
因为我确实不使用 jQuery,所以尝试使用它来回答问题是愚蠢的,因此会犯错误,所以请理解,这就是为什么我在这里用普通的 Javascript 来回答。不知道表模式、函数的作用like_post或某人如何做某事unlike都会提出问题,但做出某些假设,人们可以在这里忽略这一点。
如果您稍微修改 HTML 以删除 ID 属性(这实际上不是必需的)
<i class='fas fa-heart float-right p-1 my-1 mr-3' data-id='1' data-toggle='tooltip' data-placement='top' title='I like it'></i>
<i class='fas fa-heart float-right p-1 my-1 mr-3' data-id='2' data-toggle='tooltip' data-placement='top' title='I like it'></i>
<i class='fas fa-heart float-right p-1 my-1 mr-3' data-id='3' data-toggle='tooltip' data-placement='top' title='I like it'></i>
<i class='fas fa-heart float-right p-1 my-1 mr-3' data-id='4' data-toggle='tooltip' data-placement='top' title='I like it'></i>
<i class='fas fa-heart float-right p-1 my-1 mr-3' data-id='5' data-toggle='tooltip' data-placement='top' title='I like it'></i>
然后你可以从 HTML 元素中收集data-id值 - 大概这些值并不总是简单的,1,2,3,4,5但实际上是来自文章或数据库的 ID - 所以实际上可能更像23,6,98,123,5(?)
var iCol=document.querySelectorAll( 'i[data-id]' );
var ids=[];
iCol.forEach( i=>{
ids.push( i.dataset.id )
});
有了所有相关的 ID,您就可以向服务器发出单个 Ajax 查询,服务器将使用这些 ID 来处理用户things之前喜欢的用户。由于以下内容是基本的jQuery,仅对原始内容进行了轻微修改,因此我在这里使用它而不是使用XMLHttpRequest或Fetch
$.ajax({
url:'comment_post.php',
type:'POST',
data:{ comment_check:ids }, // send the collected IDs
dataType:'text',
success:function(json){
json.liked.forEach( id => {
document.querySelector('i[ data-id="'+id+'" ]').classList.add('red_heart')
})
}
});
检查数据库的 PHP 脚本:
<?php
session_start();
if( isset( $_POST['comment_check'] ) ) {
$payload=[];
$ids=explode( ',', $_POST['comment_check'] );
$sql='select `comment_id` from `comment_like` where `liker_id`=? and `liked`="Y"';
$stmt=$con->prepare( $sql );
$stmt->bind_param( 's', $_SESSION['user_id'] );
$status=$stmt->execute();
$stmt->bind_result( $cid );
$payload['status']=$status;
$payload['user_id']=$_SESSION['user_id'];
$payload['liked']=[];
while( $stmt->fetch() ){
if( in_array( $cid, $ids ) ) $payload['liked'][]=$cid;
}
header('Content-Type: application/json');
exit( json_encode( $payload ) );
}
?>
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报