Comment stopper l'exécution de script ajax

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par di6zero, 21 Avril 2019.

  1. di6zero
    di6zero Nouveau WRInaute
    Inscrit:
    21 Avril 2019
    Messages:
    2
    J'aime reçus:
    0
    bonjour, j'ai déjà poser cette question mais pas de réponse, après plusieurs recherche je pas de solution alors je doit recommencer avec un autre titre.

    j'ai un système de commentaire, que je traite avec ajax pour ne pas actualiser le navigateur, ça marche mais le problème c'est quand je click sur le bouton commenter au lieux d'enregistrer un seul commentaire, le script s’exécute plusieurs fois et enregistre le même commentaires 5,7,100 fois

    j'aimerais que si je click sur commenter, qu'il y ai qu'un seul enregistrement, que le script transmet a la page comment_add.php qu'un seul commentaire par click

    voici mon code:

    comment.php
    Code:
    <form class="form_com">
        <textarea id="com_comment_<?= $bar_cmt;?>" class="com_comment" placeholder="votre commentaire"></textarea>
        <input type="hidden" id="comment_id_<?= $bar_cmt;?>" value="0"/>
        <input type="hidden" id="bar_cmt_<?= $bar_cmt;?>" value="<?= $bar_cmt;?>" />
        <button type="submit" class="comment_sub" id="comment_sub_<?= $bar_cmt;?>">Commenter</button>
    </form>
    Code:
    <script>
        $(document).ready(function(){
            $(document).on('click', '#comment_sub_'+<?= $bar_cmt;?>, function(cmm){
                cmm.preventDefault();
                var com_comment = $('#com_comment_'+<?= $bar_cmt;?>).val();
                var comment_id = $('#comment_id_'+<?= $bar_cmt;?>).val();
                var bar_cmt = $('#bar_cmt_'+<?= $bar_cmt;?>).val();
                $.ajax({
                    url : "comment/comment_add.php",
                    method : "POST",
                    data : {com_comment:com_comment, comment_id:comment_id, bar_cmt:bar_cmt},
                    dataType: "json",             
                    success:function(data)
                    {
                        if(data.error != '')
                        {
                            $('#pub_message').html(data.error);
                            $('.comment_id').val('0');
                        }
                        else{
                            $('#pub_message').html(data.error);
                        }
                    }
                });
            });
        });
    </script>
    comment_add.php

    require_once'../inc/functions.php';
    if (session_status() == PHP_SESSION_NONE) {
    session_start();
    }
    require_once'../identifiant.php';
    $id_user = $_SESSION['auth']->id_user;
    $prenom_user = $_SESSION['auth']->prenom_user;
    $nom_user = $_SESSION['auth']->nom_user;
    $avatar_user = $_SESSION['auth']->avatar_user;
    if (!empty($_POST['com_comment'])) {
    $com_comment = $_POST['com_comment'];
    $quer = "INSERT INTO commentaire (id_com_parent, id_pub_com, id_user_com, prenom_user_com, nom_user_com, avatar_user_com, commentaire_com, date_time_com) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
    $statement = $pdo->prepare($quer);
    $statement->execute([$_POST['comment_id'], $_POST['bar_cmt'], $id_user, $prenom_user, $nom_user, $avatar_user, $com_comment]);
    }
    $data = array('error' =>$error);
    echo json_encode($data);

    merci beaucoup d'avance
     
  2. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 146
    J'aime reçus:
    125
    Si ça correspond au nombre de fois que la souris a cliqué, le plus simple est de désactiver le bouton (attribut css disabled) avant l'appel ajax (et de le réactiver au success de l'ajax, en vidant le textarea si pas d'erreur).
     
  3. di6zero
    di6zero Nouveau WRInaute
    Inscrit:
    21 Avril 2019
    Messages:
    2
    J'aime reçus:
    0
    bonjour rick38 merci beaucoup pour ta réponse mais si je le désactive en css e que je l'active en success, ca fonctionnera pas parce que le bouton sera désactiver avant l’appel ajax. du coup quand le bouton est désactiver avant ajax il y aura pas de success
     
  4. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 146
    J'aime reçus:
    125
    Ca n'a rien à voir. L'évènement est déclenché au click sur le bouton, à partir de là plus besoin du bouton il peut être rendu non cliquable.
     
Chargement...
Similar Threads - stopper exécution script Forum Date
Stopper execution $.ajax() après un clic Développement d'un site Web ou d'une appli mobile 5 Mars 2017
Comment stopper des backlinks non sollicités ? Netlinking, backlinks, liens et redirections 1 Octobre 2015
Doit-on définitivement stopper les inscriptions dans les annuaires ? Référencement Google 24 Avril 2012
Coincidence ? Stopper les adwords = descente aux enfers Référencement Google 24 Février 2012
Stopper un membre d'un forum. Droit du web (juridique, fiscalité...) 27 Janvier 2009
Exécution requête sur bouton sur une ligne tableau Administration d'un site Web 5 Juillet 2017
exécution programme binaire sur des systèmes d'exploitation Débuter en référencement 5 Novembre 2014
"max execution time" et hébergement mutualisé Administration d'un site Web 19 Février 2014
MySQL différence d'exécution Développement d'un site Web ou d'une appli mobile 15 Janvier 2013
Optimiser l'éxécution du JS Développement d'un site Web ou d'une appli mobile 21 Août 2012
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice