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 :

jQuery+ajax: recupération objet courant dans success


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Par défaut jQuery+ajax: recupération objet courant dans success
    salut

    Je n'arrive pas à appliquer le changement d'etat d'une image, au retour de l'appel ajax.
    La variable "retour" est bien égale à 0 où 1 mais l'objet $(this) ne semble pas être interprété.
    Par contre si je place le bout de code en dehors d'ajax ca fonctionne bien, mais j'ai besoins de faire des vérifications avant de modifier la valeur des attributs, des images.

    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
     
    $(".etat").click(function(){	
    	var valeur_alt = $(this).attr("alt");
           var valeur_id = $(this).attr("id");
                 $.ajax(
    	    {
    		type: "GET", 			
    		url: 'updateEtat.php?id='+valeur_id+'&etat='+valeur_alt, 
    		success: function(retour)
    		{
    			if(retour == 0){				
    				if(valeur_alt == 0){
    					$(this).attr({ src: "images/liberer.jpg", alt: "1" });
    				}
    				else if(valeur_alt == 1){
    					$(this).attr({ src: "images/attente.jpg", alt: "0"});
    		               }					
    			}					
    	      }
           });
    }
    Une autre solution à envisager?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sers toi de l'id de l'élément que tu as récupéré avant...
    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
    $(".etat").click(function(){	
    	var valeur_alt = $(this).attr("alt");
           var valeur_id = $(this).attr("id");
                 $.ajax(
    	    {
    		type: "GET", 			
    		url: 'updateEtat.php?id='+valeur_id+'&etat='+valeur_alt, 
    		success: function(retour)
    		{
    			if(retour == 0){				
    				if(valeur_alt == 0){
    					$(valeur_id).attr({ src: "images/liberer.jpg", alt: "1" });
    				}
    				else if(valeur_alt == 1){
    					$(valeur_id).attr({ src: "images/attente.jpg", alt: "0"});
    		               }					
    			}					
    	      }
           });
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Par défaut
    C'est bien vu, j'avais pas percuté sur cette manipulation. Par contre camarche pas directement, surement parceque la ligne de l'image est définit comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '<img  class="etat" src="images/liberer.jpg" alt="1" id="'.$id.'" user='.$resa_user.'/>';
    donc j'ai testé quelque chose de ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(valeur_alt == 0){
        $(valeur_id).prev("alt").attr("alt", "1");
       $(valeur_alt).prev("src").attr("src", "images/liberer.jpg");
    }

    Le dom c'est toujours la galère donc si vous avez une idée?

    edit: j'ai également essayé au moyen d'une fonction à laquelle je passe en paramètre valeur_id et valeur_alt mais idem, le changement d'état ne se fait qu'après un refresh de la page.
    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
     
    ....
    if(retour == 0){
    testAffich(valeur_id, valeur_alt);
    }
     
    function testAffich(valeur_id, valeur_alt){
     
    		alert("ID: "+valeur_id+' ALT: '+valeur_alt)
    		if(valeur_alt == 0){
    				$(valeur_id).attr({ src: "images/liberer.jpg", alt: "1" });
    		}
    		else if(valeur_alt == 1){
    				$(valeur_id).attr({ src: "images/attente.jpg", alt: "0"});
    		}
     
    	}
    Et l'alert affiche bien les bonnes valeurs.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    plutôt...
    Par contre, j'ai du mal à cerner le nouveau problème !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Par défaut
    Il n'y a pas vraiment de nouveau problème, c'est juste que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(valeur_id).attr({ src: "images/liberer.jpg", alt: "1" });
    ne marchait pas donc je pensais que ca venait d'une mauvaise manipulation du DOM et j'essayais de trouver un moyen d'y arriver.

    Bref j'ai garder ce que j'avais au début et juste ajouté une fonction et le changement d'état ne se fait toujours pas. La valeur de l'état est bien modifié en base et ca passe bien dans le if (le dernier qui modifit l'attribut) mais la dernière ligne de code n'a pas l'air d'être prise en compte.
    Je repost le code "complet"


    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
     
     
    $(".etat").click(function(){	
    		var valeur_alt = $(this).attr("alt");
    		var valeur_id = $(this).attr("id");
    		var valeur_user = $(this).attr("user");		
     
    		if (valeur_user !== "" || valeur_user != "undefined") //d'ailleur ca ca marche pas
    		{			
    			$.ajax(
    				{
    				type: "GET", 			
    				url: 'updateEtat.php?id='+valeur_id+'&etat='+valeur_alt, 
    				success: function(retour)
    				{					
    					if(retour == 0){			
     
    						testAffich(valeur_id, valeur_alt);								
    					}					
    				}
    			});
    		}
    	});
     
    	function testAffich(valeur_id, valeur_alt){		
     
    		if(valeur_alt == '0'){
    		alert("ID: "+valeur_id+' ALT: '+valeur_alt);
    				$(valeur_id).attr({ src: "images/liberer.jpg", alt: "1" });
    		}
    		else if(valeur_alt == '1'){
    				$(valeur_id).attr({ src: "images/attente.jpg", alt: "0"});
    		}
    	}
    edit: c'est bon j'ai trouvé, j'en suis revenu à essayer de passer l'objet $(this) (correspondant $(".etat") ici) en paramètre aux fonctions descendantes.
    Le problème était que passer l'objet tel quel ne marchait pas, donc il suffit juste d'affecter $(this) à une variable comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(".etat").click(function(){	
    		var valeur_alt = $(this).attr("alt");
    		var valeur_id = $(this).attr("id");
    		var valeur_user = $(this).attr("user");	
                    valeurCourante = $(this);
    ....
    chelou comme contrainte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Obtenir l'id de l'objet courant dans colorpicker
    Par Sayrus dans le forum jQuery
    Réponses: 6
    Dernier message: 24/09/2010, 10h39
  2. Réponses: 4
    Dernier message: 04/09/2009, 12h07
  3. [jTree]Recupérer l'objet contenu dans la feuille
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 27/11/2006, 15h03
  4. [VB.NET] Recupérer saisie courante dans une Datagrid
    Par jojo-la-praline dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/04/2006, 21h36

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