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 :

Ajax fonctionne une fois sur deux


Sujet :

jQuery

  1. #1
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut Ajax fonctionne une fois sur deux
    Bonjour,
    Alors je souhaite utiliser la fonction ajax de jQuery pour faire une navigation sans recharger les pages.
    Cependant je le fait de façon à ce que même JavaScript désactivé çà fonctionne.

    Donc quand j'arrive sur ma page je clique sur un lien de la pagination, là c'est OK sa rafraichit que les éléments voulus .

    Mais après si je clique à nouveau sur un lien de la pagination la navigation Ajax ne marche pas et sa va à l'URL en rechargeant la page.

    J'ai donc comparé les deux pages : la page quand çà marche et la page quand çà marche pas.

    Mais la seule différence que je vois c'est :
    <div style="display: block;" id="produits"> ( dans la page chargé via Ajax)
    et
    <div id="produits"> ( dans la page en accés direct, et c'est cette ligne dans mon fichier php)

    D'où çà peut venir ?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Il manque un return false pour éviter le traitement par défaut et la propagation de l'événement dans le DOM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $("monID").click(function(){
       ---
       return false;
    });

  3. #3
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut
    Bonjour,
    Le problème ne vient pas de là : le "return false;" y est.

    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
    $(document).ready(function(){
    	$(".paginate").click(function() {
    		var page = $(this).attr("href");
    		page = page.replace("index.php","produits.php");
    		$.ajax({
    			url: page,
    			cache: false,
    			success: function(html){
    				$("#produits").fadeOut(300, function(){
    					$("#produits").empty().append(html).fadeIn(500);
    				});
    			},
    			error: function(XMLHttpRequest, textStatus, errorThrown){
    				alert(textStatus);
    			}
    		});
    		return false;
    	});
    });

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    plusieurs id produits sur la page ?

  5. #5
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut
    Non un seul <div id="produits"> et dans la page il n'y a que 2 <div id="*"></div>

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    essaye de rajouter live() sur ton

  7. #7
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut
    Donc maintenant j'ai mis dans la partie success de la requete Ajax ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#produits").live('click', function(){
             $("#produits").empty().append(html).fadeIn(500);
    });
    En contrôlant avec Firebug quand je clique sur les liens de pagination je vois bien que les requêtes sont envoyées.
    Cependant elles ne sont pas chargé dans le div #produits

    Alors qu'avant sans le live() avec Firebug je ne voyais la requête faite par Ajax que une fois, la 2éme fois c'était tout le temps un rechargement total de la page.

    ##EDIT##
    J'ai une information qui peut être est importante.
    Dans mon fichier .js j'ai essayé autre chose.
    J'ai mis :
    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
     
    $(document).ready(function(){
    	$(".paginate").click(function() {
    		var page = $(this).attr("href");
    		page = page.replace("index.php","produits.php");
    		$.ajax({
    			url: page,
    			cache: false,
    			success: function(html){
    				alert(html);
    				$("#produits").empty().append(html);
    				$("#produits").live('click', function(content){
    					alert(content);
    					$("#produits").empty().append(html);
    				});
    				/*$("#produits").fadeOut(300, function(){
    					$("#produits").empty().append(html).fadeIn(500);
    				});*/
    			},
    			error: function(XMLHttpRequest, textStatus, errorThrown){
    				alert(textStatus);
    			}
    		});
    		return false;
    	});
    });
    Premiere fois que je clique sur un lien j'ai un alert qui s'ouvre avec le contenu de la page chargé, je re-clique sur un autre lien et la dans l'alert j'ai "[object Object]"

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    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
    $(document).ready(function(){
    	$(".paginate").click(function() {
    		var page = $(this).attr("href");
    		page = page.replace("index.php","produits.php");
    		$.ajax({
    			url: page,
    			cache: false,
    			success: function(html){
    				$("#produits").html(html);
    			},
    			error: function(XMLHttpRequest, textStatus, errorThrown){
    				alert(textStatus);
    			}
    		});
    		return false;
    	});
    });
    Je ne comprends pas bien le but final de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		var page = $(this).attr("href");
    		page = page.replace("index.php","produits.php");
    S'il s'agit de modifier le lien dans this, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).attr("href", "produits.php");

  9. #9
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut
    En fait çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		var page = $(this).attr("href");
    		page = page.replace("index.php","produits.php");
    çà me permet de récupérer uniquement le contenu de la page produits.php pas de <head> etc...
    Car dans index.php j'ai le <html><head>..... et aprés j'inclu produits.php

    Même en remplaçant par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#produits").html(html);
    J'ai toujours le même problème.

Discussions similaires

  1. Lien vers un fichier qui fonctionne une fois sur deux
    Par jmsch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/10/2011, 21h00
  2. Mean Shift fonctionne une fois sur deux
    Par killshout dans le forum OpenCV
    Réponses: 0
    Dernier message: 19/09/2011, 00h43
  3. Eclipse fonctionne une fois sur deux
    Par crocodile dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/10/2009, 12h39
  4. Expression Régulière fonctionne une fois sur deux
    Par KoRiGaN44 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/07/2008, 19h07
  5. Réponses: 5
    Dernier message: 14/09/2007, 12h02

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