Bonjour,

Je suis en train de créer un système de Like/Dislike sur mon site et je rencontre un soucis sur mes bouttons.

Ce que je fais

Voici ma fonction qui récupére la liste des éléments likés. Elle fonctionne bien. Trop bien en fait. Mon problème se situe dans le success.
Dans la condition où je dis "si l'idMessage (élément liké inséré dans la bdd) === à l'ID du message (input hidden avec comme valeur l'ID du message) alors tu disable le boutton. Sauf que ça ne marche pas, il disable tous les bouttons sans distinction.

$.ajax({
        url: '/action/ajax/upvote/UpvoteQuery.php',
        dataType: 'json',
        success: function (response) {
        // vote_message == id du message
            let vote_message = $('.ajax--vote-message').val();

            for (let i in response) {
                if (response.hasOwnProperty(i)) {
                    if (response[i].idMessage === vote_message) {
                        $('.ajax--vote-like').addClass('disabled');
                    }
                    console.log(response[i].idMessage);
                    console.log(vote_message);
                }
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console.log('[ERROR]' + xhr.status + ' ' + thrownError);
        }
    });
$vote = Database::getQuery( '
SELECT v.id, idPoster, idAuthor, idMessage, is_liked, is_disliked
FROM ln_forum_vote v' )->fetchAll( PDO::FETCH_OBJ );

$json = json_encode( $vote, JSON_UNESCAPED_UNICODE );

echo $json;

Ce que je veux

Ma question est la suivante : qu'est-ce que je rate ? Y a-t-il un moyen de sélectionner LE boutton selon le message liké ou non ? En sachant que je ne peux pas m'aider de PHP (pas possible d'avoir un ID en $_GET par exemple).

1 réponse


Bonsoir,

Tu boucles sur la liste de tes résultats en base mais tu appliques la classe disabled à tous tes éléments si au moins un id est égale à vote_message.

Un conseil :

Fais un dump de : vote_message , $('.ajax--vote-like') et tu vas vite voir le soucis.

A+