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

JavaScript Discussion :

ajax ne marche qu'une fois


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 43
    Par défaut ajax ne marche qu'une fois
    bonjour,

    j'ai une liste de profils sur plusieurs pages

    je souhaite passer les pages sans recharger avec ajax

    au 1er clique sur suivant ça fonctionne mais apres la page se recharge

    J'ai beau chercher mais je ne trouve aucune solution

    voici mon js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    $(document).ready(function (e) {
    	$("#precedent").on('submit',(function(e) {
     
    		e.preventDefault();
    		$.ajax({
            	url: "/include/liste_amis.php",
    			type: "GET",
    			data:  $(this).serialize(),
    			success: function(data)
    		    {
    			$("#listea").html(data);
    			},
    		  	error: function() 
    	    	{
    				console.log(error);
                    alert(error);
     
    	    	}, 
    			complete : function(resultat, statut)
    			{
    			}
     
    	   });
    	}));
    });
     
     
    $(document).ready(function (e) {
    	$("#suivant").on('submit',(function(e) {
     
     
    		e.preventDefault();
    		$.ajax({
            	url: "include/liste_amis.php",
    			type: "GET",
    			data:  $(this).serialize(),
    			success: function(data)
    		    {
    			$("#listea").html(data);
    			},
    		  	error: function() 
    	    	{
    				console.log(error);
                    alert(error);
     
    	    	}, 
    			complete : function(resultat, statut)
    			{
    			}
     
    	   });
    	}));
    });

    voici mon code pour passer les pages:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		  <div class="navigation_liste">
     
    <form id="precedent" action="" method="get">
    		<input type="hidden" name="init" value="<?php echo $lien_liste; ?>">
    		<input type="hidden" name="limite" value="<?php echo $limiteprecedente_liste; ?>">
    		<button type="submit" class="navigation_liste_left"></button>
    		</form>
     
     
    <form id="suivant" action="" method="get">
    		<input type="hidden" name="init" value="<?php echo $lien_liste; ?>">
    		<input type="hidden" name="limite" value="<?php echo $limitesuivante_liste; ?>">
    		<button type="submit" class="navigation_liste_right"></button>
    		</form>
     
    </div>

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    Si ton code pour passer les pages est inclus dans le code que tu inclus en ajax, il faut réinitialiser les comportements sur tes boutons après le retour ajax car ce sont des nouveaux éléments du DOM et ils ne sont pas concernés par les premiers comportements que tu as définis. Donc sur le principe, tu peux faire un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    $(function () {
     
    function precedent()
    {
    	$("#precedent").on('submit',(function(e) {
    		e.preventDefault();
    		$.ajax({
            	url: "/include/liste_amis.php",
    			type: "GET",
    			data:  $(this).serialize(),
    			success: function(data)
    		    {
    			$("#listea").html(data);
                            // Initialise les comportements sur les éléments de "data" nouvellement inclus
                            suivant();
                            precedent();
    			},
    		  	error: function() 
    	    	{
    				console.log(error);
                    alert(error);
     
    	    	}
    	   });
    	}));
    }
     
     
    function suivant()
    {
             $("#suivant").on('submit',(function(e) {
    		e.preventDefault();
    		$.ajax({
            	url: "include/liste_amis.php",
    			type: "GET",
    			data:  $(this).serialize(),
    			success: function(data)
    		    {
    			$("#listea").html(data);
                            // Initialise les comportements sur les éléments de "data" nouvellement inclus
                            suivant();
                            precedent();
    			},
    		  	error: function() 
    	    	{
    				console.log(error);
                    alert(error);
     
    	    	}
    	   });
    	}));
    }
     
     
    // Initialise les comportements au chargement de la page
    suivant();
    precedent();
     
    });
    (code pas testé, complété à partir de ton code initial)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    l'explication est bonne, la solution moins...

    La méthode simple est de "raccrocher"les éléments à un élément DEJA présent dans le DOM.
    Comme 'body' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$('body').on('submit', '#precedent', function(e) {
    ....
            });
    Et bien sûr, le code jQuery doit être en dehors du div #listea.
    Dernière modification par Invité ; 23/12/2017 à 16h53.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 43
    Par défaut
    Que veux tu dire par:

    le code jQuery doit être en dehors du div #listea ?

    j'avais essayé de mettre mes bouttons precedent et suivant en dehors du div listea mais ça fonctionne qu'une fois

    apres plus rien mon boutton suivant est bloqué aucune action possible et je perd ma variable limite apparemment
    car le precedent me retourne $limite en - donc erreur sql

Discussions similaires

  1. [AJAX] Panier ajax qui ne marche qu'une fois..
    Par dev14 dans le forum AJAX
    Réponses: 1
    Dernier message: 18/07/2013, 03h59
  2. Macro qui marche qu'une fois
    Par baski dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2007, 22h55
  3. Fonction javascript qui marche qu'une fois sous Firefox
    Par ns_deux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2006, 10h38
  4. Adodc1 ne marche qu'une fois ?
    Par VARACH dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 04/04/2006, 13h57
  5. [applet]ne marche qu'une fois..
    Par woorant dans le forum Applets
    Réponses: 2
    Dernier message: 22/02/2006, 10h00

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