Problème bouton favoris

Fermé
tybmhi Messages postés 200 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 18 septembre 2017 - 2 nov. 2015 à 09:42
tybmhi Messages postés 200 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 18 septembre 2017 - 2 nov. 2015 à 12:54
Bonjour à tous,

Je tente d'insérer un bouton qui permet d'ajouter un article aux favoris avec jquery/ajax. Clairement, lorsque l'internaute clique sur le bouton "+ favoris" celui-ci enregistre les données dans la bdd. Puis, le bouton "+ favoris" devient "- favoris" pour que l'internaute puisse changer d'avis immédiatement et retirer l'article de ses favoris sans avoir besoin de recharger la page.
Lorsque je clique une première fois, tout va bien. Tout s'enregistre et le bouton se transforme. Cependant, si je clique une deuxième fois (sans recharger la page) ça ne fonctionne plus, comme si jquery n'était plus reconnu. Alors que si je recharge la page, tout fonctionne, jquery étant rechargé.


<div id="ext_lien">
<div id="int_lien">
<?php
if ($si_favoris == 0){
?>
<form name="form_favoris" id="form_favoris" method="POST" action="requete_ajax/favoris.php" style="display:inline;">
<input type="hidden" id="id_article" name="id_article" value="<?php echo $id; ?>" />
<input type="hidden" id="favoris_detail" name="favoris_detail" value="oui" />
<button type="submit" name="submit_oui" id="submit_oui" class="shortcut" style="border:none;" onclick="retirer_favoris()"><i class="shortcut-icon icon-heart-empty"></i>
<span class="shortcut-label">+ Favoris</span></button>
</form>
<?php
} else {
?>
<form name="form_favoris" id="form_favoris" method="POST" action="requete_ajax/favoris.php" style="display:inline;">
<input type="hidden" id="id_article" name="id_article" value="<?php echo $id; ?>" />
<input type="hidden" id="favoris_detail" name="favoris_detail" value="non" />
<button type="submit" name="submit_non" id="submit_non" class="shortcut" style="border:none;" onclick="nouveau_favoris()"><i class="shortcut-icon icon-heart" style="color:#e03e3d;"></i>
<span class="shortcut-label" >- Favoris</span></button>
</form>
<?
}
?>
</div></div>


<script>
$(document).ready(function() {

// lorsque je soumets le formulaire
$('#form_favoris').on('submit', function() {

var $this = $(this);

// appel Ajax
$.ajax({

url: $this.attr('action'), // le nom du fichier indiqué dans le formulaire
type: $this.attr('method'), // la méthode indiquée dans le formulaire (get ou post)
data: $this.serialize(), // je sérialise les données, ici les $_POST
success: function(html) { // je récupère la réponse du fichier PHP

if (html === 'true') {

actualiser_favoris();

}


}
});
return false; // j'empêche le navigateur de soumettre lui-même le formulaire
});
});
</script>

<script type="text/javascript">
function actualiser_favoris() {
$(document).ready(function() {
$('#ext_favoris).load('article.php?id_article=<?php echo $id_article ?> #int_favoris');
});
}
</script>
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
2 nov. 2015 à 12:09
Salut,

Essaye de modifier le déclenchement de ton événement comme ceci :
    // lorsque je soumets le formulaire
    $('body').on('submit', '#form_favoris', function() {


Bonne journée
0
tybmhi Messages postés 200 Date d'inscription dimanche 13 juillet 2008 Statut Membre Dernière intervention 18 septembre 2017 12
2 nov. 2015 à 12:54
Bonjour et un GRAND merci Pitet !! C'est excellent, ça fonctionne ! Encore merci et bonne journée à toi aussi.
0