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 :

Traitement réponse json [AJAX]


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Traitement réponse json
    Bonjour a tous,
    j'ai un formulaire (dans un modal au cas ou ca aurait de l'importance) lorsque l'utilisateur note un référence je vérifie via une requete ajax si elle existe déjà en db.
    Si oui je lui renvoi les informations via un tableau json et je l'integre dans le formulaire (en tout cas j'aimerais bien )

    j'ai bien une réponse (via la console network) {"urla":"www","urlb":"maison","urlc":"150000"}

    si je fait une alert sur ma réponse ca affiche correctement mais si je fait une alert sur un "champ" de ma réponse ca me donne undefined

    voici le code de mon script

    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
     
    $(function(){
    $("#ref").blur(function() {
    	var refin = $(this).attr('value');
    			/* DATASTRING */
    		    var dataString = 'ref='+ refin;
     
    			$.ajax({
    			type: "GET",
    		        url: "ref.php",
    			dateType : 'json',
    		        data: dataString,
    		    	success: function(datass){
    					$('#url').val(datass['urla']);  //n'affiche rien 
    					alert(datass); //affiche  {"urla":"www","urlb":"maison","urlc":"150000"}
    					alert(datass.urla); //affiche undefined
    		   		}
    			});
     
    		   return false;
     
    			}); //EOF
    	});
    Si quelqu'un voit mon erreur ce serait super gentil de me mettre mon nez dessus lol

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 844
    Points
    4 844
    Par défaut
    Salut,
    essaie
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(datass[0].urla);
    si ça ne marche pas, montes le code html utilisé et le fichier ref.php, pour que je fasse un teste.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    merci d'avance de ton aide
    malheureusement ce n'est pas ca il m'affiche toujours undefined

    et si je fais il m'affiche {

    voici le fichier ref.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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    // Connexion à la base de données
     
    // Sous WAMP (Windows)
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=cmr;charset=utf8', 'root', 'root',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
     
     
     
    if (isset($_GET['ref'])) {
     
    	$refer=$_GET['ref'];
    	$referc = $refer;
     
     
    $reponse = $bdd->prepare("SELECT * FROM inlinemod where ref = $refer");
     
    		$reponse -> execute();
     
    		while ($data = $reponse->fetch()) {
     
     
    		$t = array();
    		$t["urla"] = $data['url'];
    		$t["urlb"] = $data['typedebien'];
    		$t["urlc"] = $data['prix'];
     
    echo json_encode($t);
    }
    }
    else echo"erreur";
     
    ?>
    ce que je ne comprend pas c'est la réponse via la console debug est conforme mais que je parviens pas a extraire les données

    encore merci à toi

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    		    	success: function(datass){
    				datass = JSON.parse( datass );
    				$('#url').val( datass.urla );
    ...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    un immense merci c'est juste le parse qui bloquait
    sur le tuto que j'avais suivi il n'en parlait pas
    un immense merci !!!!!!

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 844
    Points
    4 844
    Par défaut
    Première erreur c'est var refin = $(this).val(); et pas $(this).attr("value");
    Deuxième erreur c'est dataType et pas dateType dans $.ajax.

    Troisième erreur c'est la façon dont tu as écris ton fichier php, et tu n'as pas préparé correctement ta raquette.

    Remarque :quand on utilise dataType:'json' dans ajax, on ne parse pas l'objet reçu en json, c'est $.ajax qui s'en occupe.

    Voilà la correction :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    $(function(){
    	$("#ref").blur(function() {
    	       var refin = $(this).val();
    		/* DATASTRING */
    		var dataString = 'ref='+ refin;
     
    		$.ajax({
    			method: "GET",
    			url: "ref.php",
    			dataType : 'json',
    			data: dataString,
    			success: function(datass){
    				if(!datass.erreur){
    					$('#url').val(datass.url);  //get url 
    					console.log(datass); //affiche  {"urla":"www","urlb":"maison","urlc":"150000"}
    					console.log('datass.url :',datass.url);
    				}
    				else alert(datass.erreur);
     
    			},
    			error:function(err){
    				alert(err.responseText);
    			}
    		});
     
    		return false;
     
    	}); //EOF
    });
    et 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    // Connexion à la base de données
     
    // Sous WAMP (Windows)
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=cmr;charset=utf8', 'root', 'root',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
     
     
    $data=[]; 
    if (isset($_GET['ref']) && !empty($_GET["ref"]) ) {
     
    		$refer=$_GET['ref'];
    		$referc = $refer;
    		$reponse = $bdd->prepare("SELECT * FROM inlinemod where ref =:ref");
    		$reponse->execute([':ref'=>$refer]);
    		$data = $reponse->fetch(PDO::FETCH_ASSOC);
    		if($reponse->rowCount()==0){
    			$data=["erreur"=>"Ce ref n'existe pas !"];
    		}
    }
    else {
    	$data["erreur"]="Aucune valeur n'a été envoyée !";
    }
    echo json_encode($data);
     
    ?>

  7. #7
    Invité
    Invité(e)
    Par défaut
    Toufik83 a raison. (je n'avais pas testé directement ton code)


    J'ajoute que .success/.error sont remplacés par .done/.fail.

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 844
    Points
    4 844
    Par défaut
    Oui jreaux62, il y a aussi le paramètre "type" d'ajax qu'on peut/doit remplacer par "method".

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

Discussions similaires

  1. [ZF 1.11] Probléme d'une Réponse JSON bizarre
    Par zizou86 dans le forum Zend Framework
    Réponses: 4
    Dernier message: 30/01/2012, 06h17
  2. Struts dojo tags : traitement de la réponse JSON
    Par Flam dans le forum Struts 2
    Réponses: 1
    Dernier message: 29/05/2011, 02h03
  3. Caractère inconnu dans réponse JSON
    Par canardman dans le forum jQuery
    Réponses: 0
    Dernier message: 04/05/2011, 12h15
  4. réponse json mal formée ?
    Par Alexdezark dans le forum jQuery
    Réponses: 4
    Dernier message: 16/03/2010, 19h28
  5. [AJAX] Appeler un script php apres traitement réponse Ajax
    Par lekunfry dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/10/2008, 13h34

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