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 關注
- 100 瀏覽
添加回答
舉報