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écupérer résultat sélection liste déroulante via retour $j.ajax [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut Récupérer résultat sélection liste déroulante via retour $j.ajax
    Bonjour à tous,

    J'ai un formulaire de trois champs (Prix unitaire, quantité et total pour ce produit) dont l'un (prix unitaire) est documenté par le choix dans une liste déroulante alimentée par une requête en Php sur une table MySQL.
    Je passe par $j.ajax pour récupérer la valeur de prix unitaire et cela fonctionne à ceci près que le prix affiché est toujours celui du choix précédent (toujours décalé d'un choix donc, je reste toujours asynchrone).
    Je colle sur la formule a utiliser après deux jours de recherches et autres tests (callback, promise, etc.)
    Auriez vous une piste, un conseil à me suggérer SVP ?
    Je vous en remercie par avance !
    Ci dessous, le code :

    // Le fichier .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
    $j(function() {
        /* Passe les champs total_produit et prix unitaire en lecture seule */
        var fieldlist = ('#total_produit, #prix_unitaire');
        $j(fieldlist).prop('readonly', true);
     
    	/* Sur changement de la valeur dans la combo produits */
    	$j('#produit-container').on('change', function() {
    		var idProSelect = $j('#produit').val();
    		console.log(idProSelect); // Debug
     
            if (idProSelect == '{undefined}') {
                $j('#prix_unitaire').val('');
            } else {
    			$j.ajax({
    					url: 'hooks/ajax-ads_sub_adhesion.php',
    					type:'GET',
    					dataType : 'json',
    					// cache: false,
    					async: true,
    					data: {id: idProSelect},
    					success: function(data) {
    						$j('#prix_unitaire').val(data);
    						console.log($j('#prix_unitaire').val()); // Debug
    					},
    					error: function (jqXHR, textStatus, errorThrown) {
    						console.log("L'appel Ajax est un échec.");
    					}
    				})	
    		}
    	});	
     
        /* Recalcul le total sur modification quantité */
        $j('#prix_unitaire, #quantite').change(function(){
            var prix_unitaire = parseFloat($j('#prix_unitaire').val()) || 0;
            var quantite = parseFloat($j('#quantite').val()) || 0;
     
            var total_produit = Math.round(prix_unitaire * quantite * 100) / 100;
            $j('#total_produit').val(total_produit);
    		$j('#total_produit').change();
        });
    })
    // le fichier Php
    Code PHP : 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
    <?php
     
    $currDir = dirname(__FILE__) . '/..';
    include("$currDir/defaultLang.php");
    include("$currDir/language.php");
    include("$currDir/lib.php");
     
    /* Permettre l'accès à tous les utilisateur ayant accès à la table sub_adhesions */
    $od_from = get_sql_from('ads_sub_adhesion');
    if(!$od_from){
    	header('HTTP/1.0 401 Unauthorized');
    	exit;
    }
    /* Requête sur table catalogue pour sélection produit en fonction de la variable récupérée */
    $idProSelect = intval($_REQUEST['id']);
    $prix_unitaire = sqlValue("SELECT `prix_unitaire` FROM `ads_catalogue_produits` WHERE `idProduit` = '$idProSelect'");
    /* Renvoi résultat */
    echo json_encode($prix_unitaire);

    Christophe

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 519
    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 519
    Par défaut
    As-tu essayé d'utiliser .done au lieu de success ?

  3. #3
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Merci de ta réponse Toufik83,
    Je teste de ce pas !

  4. #4
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Toufik83 plus de changement de prix via le select si .done...
    Retour du changement de prix avec le .success

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 519
    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 519
    Par défaut
    J'imagine que tu as remplacé success par done, si oui eh ben ce n'est pas comme ça qu'on utilise done
    au lieu de
    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
     
    $j.ajax({
    	url: 'hooks/ajax-ads_sub_adhesion.php',
    	type:'GET',
    	dataType : 'json',
    	// cache: false,
    	async: true,//async est déjà true par défaut, tu peux supprimer ça
    	data: {id: idProSelect},
    	success: function(data) {
    		$j('#prix_unitaire').val(data);
    		console.log($j('#prix_unitaire').val()); // Debug
    	},
    	error: function (jqXHR, textStatus, errorThrown) {
    		console.log("L'appel Ajax est un échec.");
    	}
    });
    tu mets
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $j.ajax({
    	url: 'hooks/ajax-ads_sub_adhesion.php',
    	type:'GET',
    	dataType : 'json',
    	cache: false,
    	data: {id: idProSelect}
    })
    .done(function(data){
         $j('#prix_unitaire').val(data);
         console.log($j('#prix_unitaire').val()); // Debug
    })
    .fail(function(err){
        console.log("Erreur ajax :"+err.responseText);
    });

  6. #6
    Membre averti
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Décembre 2012
    Messages : 34
    Par défaut
    Merci de ton retour détaillé !
    Le script fonctionne, je récupère bien les valeurs dans les champs et la console mais je suis toujours décalé de 1 choix dans le select...

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

Discussions similaires

  1. Récupérer variable de liste déroulante
    Par remfleyf dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2007, 16h13
  2. Réponses: 1
    Dernier message: 02/07/2007, 15h57
  3. [MySQL] alimenter une liste déroulante via une requête
    Par stefon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2006, 13h32
  4. Réponses: 15
    Dernier message: 21/11/2006, 10h13
  5. Sélection liste déroulante puis affichage de text box
    Par dolu007 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/11/2006, 00h03

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