IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Ré-exécution d'une fonction AJAX


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut Ré-exécution d'une fonction AJAX
    Bonjour à tous,

    Je suis un primo-débutant en AJAX ; mais jusqu'ici tout allait bien

    Mon objectif est d’afficher dans un fichier php (ref.php) une liste de champs texte d’une table Mysql, et d’éventuellement en supprimer un à un, avec un bouton, de manière asynchrone.

    L’affichage de la liste est géré par un fichier «*liste_ref.inc*» ; les données sont contenues dans une variable $lR (id est l’identifiant de l’enregistrement, num son numéro d’ordre sur la page) :

    (liste_ref.inc)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while($lR=$reqR->fetch(PDO::FETCH_ASSOC)) {
    	$liste.="<input type='number' size='3' name='num_ref_".$lR["num"]."' id='num_ref_".$lR["num"]."' value='".$lR["num"]."' class='cssinput'>
    	&nbsp;&nbsp;<img id='del_ref".$lR["id"]."' ref='".$lR["id"]."' class='del_ref' title='Supprimer cette référence' src='../img/button_drop.png'><br>
    	<textarea name='ref_".$lR["num"]."' class='ref'>".html_entity_decode($lR["lib"])."</textarea><div style='height:5px;'></div>";
    	$next_ref=$lR["num"];
    }

    (ref.php) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $article=$l["id"];
    include("liste_ref.inc");
    echo"<div id='liste_ref'>";
    echo$liste;
    echo"</div>";

    Pour effectuer la suppression de l’enregistrement «*id*» de manière asynchrone, j’utilise, dans ref.php, une fonction jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(document).ready(function(){
          $(".del_ref").click(function(){
                var fd = new FormData();	/
                var ref=$(this).attr('ref');		
                var article=$('#doss').val();
                fd.append('ref',ref);		
                fd.append('article',article);
    		…
    		$.ajax({		// instancie implicitement un objet XmlHttpRequest
                     	url:'ref_delete.php',
    			…
                            success:function(response){
    				$("#liste_ref").html(response.liste);
                              ...
    Dans le fichier ref_delete.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $ref=$_REQUEST['ref'];
    
    (exécution d’une requête PDO)
    include("liste_ref.inc");
    echo json_encode(array("result"=>"reference ".$ref." de ".$article." supprimée","liste"=>$liste));
    ?>

    Bref, le code fonctionne… une fois. La nouvelle liste s’affiche, et l’élément concerné est bien supprimé.
    MAIS, ensuite, impossible de ré-exécuter une autre suppression, pour un autre élément de la liste.

    Une alerte au début de $(".del_ref").click(function() ne se déclenche plus… Pourtant, l’examen de la page ne révèle aucune différence avec l’état initial !

    SVP pourriez-vous me donner une idée d’où se situe le problème ?

    En vous remerciant, et bien cordialement.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 520
    Par défaut
    Bonjour,

    C'est parce que tes éléments s'ajoutent dynamiquement au document après qu'il soit chargé, donc il faut passer par délégation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("body").on("click",".del_ref",function(){
       //ton code...
    });
    Tu peux remplacer body par un autre élément existant !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Par défaut
    Merci Toufik,

    Je vais essayer (j'avais déjà mis en place une autre solution, moins élégante).

Discussions similaires

  1. [AJAX] arreter l'exécution d'une fonction Ajax
    Par amine84 dans le forum AJAX
    Réponses: 13
    Dernier message: 09/09/2009, 15h52
  2. Stopper l'exécution d'une fonction au bout d'un certain temp
    Par Eagle959 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/03/2006, 18h16
  3. Réponses: 3
    Dernier message: 11/03/2006, 15h35
  4. Pause dans l'exécution d'une fonction
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2005, 07h48
  5. Exécution d'une fonction...
    Par mickeliette dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/11/2004, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo