Поскольку я действительно не использую 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>
Затем вы можете собрать значения data-id
из элементов HTML - по-видимому, они не всегда будут просто 1,2,3,4,5
, но фактически будут Идентификаторы из статей или что-то еще из db - так что на самом деле это может быть больше похоже на 23,6,98,123,5
(?)
var iCol=document.querySelectorAll( 'i[data-id]' );
var ids=[];
iCol.forEach( i=>{
ids.push( i.dataset.id )
});
Со всеми соответствующими идентификаторами вы можете отправить свой единственный Ajax запрос на сервер, который будет использовать при обработке идентификаторы, которые из things
ранее понравились пользователю. Поскольку ниже приведено базовое c 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 для проверки db :
<?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 ) );
}
?>