Partage
  • Partager sur Facebook
  • Partager sur Twitter

stoper l'execussion de script ajax

    21 avril 2019 à 8:58:14

    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

    <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>
    <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



    • Partager sur Facebook
    • Partager sur Twitter
      22 avril 2019 à 11:36:47

      Essaie de mettre des console.log pour voir a quel moment precis la fonction se repete, tu mets l ajax entre commentaires, tu essaies chaque morceau separement. (pour voir les log, c est dans la console du navigateur)
      • Partager sur Facebook
      • Partager sur Twitter
        22 avril 2019 à 16:39:16

        Hello, deja ce que tu peux faire pour empecher l'utilisateur de poster 5000 commentaires d'un coup c'est de griser directement le bouton "envoyer" une fois qu'il clique dessus, et tu le rends de nouveau disponible une fois que la requete ajax est terminée.

        Enuiste si le com de PauLou peut être une solution pour voir à quel moment précis de ton algo ça pète et donc régler le soucis !

        Mais désactiver le bouton envoyer quand le mec clique dessus c'est le premier truc a faire pour éviter les comportements non désirés

        cdt

        • Partager sur Facebook
        • Partager sur Twitter
        Hello World ! On en aura jamais fini d'apprendre !

        stoper l'execussion de script ajax

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown