Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2005
    Messages : 18
    Points : 5
    Points
    5

    Par défaut valeur de getJson

    Bonjour,

    Après m'être pris la tête toute la journée sur ce truc, je me tourne vers vous...

    Alors voilà, j'ai dans un index.html 2 champs
    Code html :
    1
    2
    3
    4
    <input type="text" size="80" value="" id="title" onkeyup="suggest(this.value);" onblur="fill();" class=""/>
    <div id="retour">
     <i>vide</i>
    </div>
    Le premier champ (<input> est un champ dynamique et fonctionne bien), lorsque je clique sur une des valeurs suggérées, je déclenche l'événement "onblur" et voici le code de ma fonction "fill()"
    Code :
    1
    2
    3
    4
    function fill(thisValue) {
         $('#title').val(thisValue);
         setTimeout("$('#suggestions').fadeOut();", 600);
         vachercher();
    Qui appelle à son tour la fonction "vachercher()"
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    function vachercher(){
    	$.post('AS_Code2.php', {identifiant: $('#title').val()}, function(data){
    		$('#retour').hide();
    		$('#retour').html('')
    			.append('<b>Json</b> : '+data+'<br/>')
    			.append('<b>Titre</b> : '+data.tvo+'<br/>')
    		$('#retour').fadeIn();
    	}, "json");}
    Ce qui me retourne :

    Json : [object Object],[object Object]
    Titre : undefined


    Bref, je n'arrive pas à utiliser mon Json... Donc j'essaye avec la fonction $.getJSON et là...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function vachercher(){
    	$.getJSON('AS_Code2.php', {identifiant: $('#title').val()}, function(data){
    		$('#retour').hide();
    		$('#retour').html('')
    			.append('<b>Json</b> : '+data+'<br/>')
    			.append('<b>Titre</b> : '+data.tvo+'<br/>')
    		$('#retour').fadeIn();
    	});
    }
    Ben rien, ma DIV reste avec sa valeur par défaut "vide".

    Puis j'essaye simplement avec $.post tout court
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function vachercher(){
    	$.post('AS_Code2.php', {identifiant: $('#title').val()}, function(data){
    		$('#retour').hide();
    		$('#retour').html('')
    			.append('<b>Json</b> : '+data+'<br/>')
    			.append('<b>Titre</b> : '+data.tvo+'<br/>')
    		$('#retour').fadeIn();
    	});
    }
    Et là, ça me retourne (presque) bien ce que je veux :

    Json : [{"tvf":"Gintama"},{"tvo":"Gintama"}]
    Titre : undefined


    Je disais "presque" car comme vous le voyez, je n'arrive absolument pas à utiliser mes champs...

    Un petit coup de pouce me ferait du bien, je commence à être court d'idées...

    Merci !

  2. #2
    Rédacteur
    Avatar de danielhagnoul
    Homme Profil pro Daniel Hagnoul
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Nom : Homme Daniel Hagnoul
    Âge : 64
    Localisation : Belgique

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

    Informations forums :
    Inscription : février 2009
    Messages : 4 589
    Points : 16 654
    Points
    16 654

    Par défaut

    Code html :
    1
    2
    3
    4
    5
    <input id="title" type="text" size="80" value="">
     
    <div id="retour">
    	<i>vide</i>
    </div>

    Code javascript :
    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
    $( function(){
     
    	function vachercher(){
    		$.post( 'AS_Code2.php', { "identifiant" : $( '#title' ).val() }, function( data ){
     
    			$('#retour')
    				.hide()
    				.html( '<b>Json</b> : ' + data + '<br/><b>Titre</b> : ' + data.tvo + '<br/>' )
    				.fadeIn();
     
    		}, "json");
    	}
     
    	function fill( thisValue ){
    	     $( '#title' ).val( thisValue );
     
    	     setTimeout( function(){
    	     	$( '#suggestions' ).fadeOut();
    	     }, 600 );
     
    	     vachercher();
    	}
     
    	$( "#title" ).on( "keyup", function(){
    		suggest( this.value );
    	});
     
    	$( "#title" ).on( "blur", function(){
    		fill();
    	});
     
    });

    Propositions de Q/R pour la FAQ jQuery

    plugin dialogModal

    Si un message vous a aidé ou vous semble pertinent, votez pour lui !

  3. #3
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    22 031
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 22 031
    Points : 80 648
    Points
    80 648

    Par défaut

    Json : [{"tvf":"Gintama"},{"tvo":"Gintama"}]
    Tu vois bien que la réponse reçue est un tableau (de type Array) et non un objet.
    Si tu veux accéder aux objets contenus dans ce tableau, il faut chercher leur rang :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    function vachercher(){
    	$.post('AS_Code2.php', {identifiant: $('#title').val()}, function(data){
    		$('#retour').hide();
    		$('#retour').html('')
    			.append('<b>Json</b> : '+data+'<br/>')
    			.append('<b>Titre</b> : '+data[1].tvo+'<br/>')
    		$('#retour').fadeIn();
    	}, "json");}
    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

  4. #4
    Invité régulier
    Homme Profil pro
    Inscrit en
    décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2005
    Messages : 18
    Points : 5
    Points
    5

    Par défaut

    Merci danielhagnoul, le code est tout beau tout propre comme ça !
    Seulement, mon niveau n'est vraiment pas suffisant pour comprendre pourquoi cela ne fonctionne plus avec ton code...

    Et merci Bovino, ça fonctionne évidemment mieux comme ça...
    Mais tu sais pourquoi la fonction "$.getJSON" ne me renvoie rien ?!??
    Car dans mon 'AS_Code2.php', j'ai bien mis en première ligne
    Code :
    header("Content-type: application/json");
    Et lorsqu'il me construit mon retour
    Code :
    1
    2
    3
    4
    5
    6
    7
    $json= json_encode($retour);
     
    if (isset($_GET['callback'])) {
         echo $_GET['callback'].'('.$json.');';
    } else {
         echo $json;
    }
    Merciiiiiiii

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •