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

JavaScript Discussion :

[AJAX]Récupération de données json (ajax)


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Points : 63
    Points
    63
    Par défaut [AJAX]Récupération de données json (ajax)
    Bonsoir a tous,

    Alors voila, je vous expose mon soucis :
    j'ai réalisé une page qui comporte un formulaire. Une fois rempli et cliqué, j'envoie les données via ceci (mon javascript) :

    J'utilise prototype pour faciliter les échanges.

    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
    function mettreVenteJoueur()
    	{
    		var nbvente = $F('nbvente');
    		var typevente= $F('typevente');
    		var prix= $F('prix');
    		var idMem = $F('sessionM');
     
    		  var url = './js/ventemarchejoueur_ajax.php';
    		  var myAjax = new Ajax.Request(
    		  url,
    		  {
    			method: 'post',
    			postBody: 'nbvente='+nbvente+'&typevente='+typevente+'&prix='+prix+'&idM='+idMem,
    			onComplete: reponseAjoutVenteJoueur
    		  });
     
    		}
    	}
     
    	function reponseAjoutVenteJoueur(originalRequest, json)
    	{	
    		$('marche_vendre').innerHTML =json.root.data;
    		$('tabnr').innerHTML = json.root.nr ;
    		$('tabbr').innerHTML = json.root.br ;
    		$('tabpr').innerHTML = json.root.pr ;
    		$('tabfr').innerHTML = json.root.fr ;
    		$('tabbs').innerHTML = json.root.bs ;
    		$('tabea').innerHTML = json.root.ea ;
    		$('tabha').innerHTML = json.root.ha ;
    		$('tabor').innerHTML = json.root.or ;
    	}
    Mon formulaire est tout ce qu'il y a de basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="prix" type="text" id="prix" value="1.00" size="3" maxlength="4" />
    	<input type="button" value="Vendre" onclick="mettreVenteJoueur()" />
    Et enfin mon fichier de traitement php qui initialise un tableau de donnée JSON (C'est ici que ça merde ! )
    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
    $datas = array(
    				'root' => array(
    					'data' => '<center><br>'.$res.'<br><br>
    					<a href="#nogo" onclick="retourVenteJoueur()">Vendre d\'autres ressources</a></center>', 
    					'nr' => affBoNb($nourriture),
    					'br' => affBoNb($brique),
    					'ea' => affBoNb($eau),
    					'or' => affBoNb($or),
    					'fr' => affBoNb($fer),
    					'bs' => affBoNb($bois),
    					'pr' => affBoNb($pierre),
    					'ha' => affBoNb($hectare)
    				)
    			);
     
     
    			header("X-JSON: " . json_encode($datas));
    Voila donc en local, j'ai mes champs qui se mettent bien a jour, je récupère les bonnes infos, alosr que sur mon hebergeur 1&1, je ne récupère rien.

    J'ai vérifié que 1&1 était bien en PHP5.2 pour prendre en charge nativement l'encodage du json, ce qui est le cas.

    Bref je sais plus quoi faire, après des heures passées à chercher

    Merci de m'aider :/

    (Test direct possible sur le site... je vous fournirai le lien + le pass pour y acccéder via mp)

  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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu devrais ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onSuccess: function(transport) {
        transport.headerJSON;
        reponseAjoutVenteJoueur;
      }
    En effet, Prototype évalue le JSON s'il est transmis via responseText, si le JSON est défini dans le header, il faut le préciser.
    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 du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Points : 63
    Points
    63
    Par défaut
    Alors j'ai effectué ta modification :

    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
    function mettreVenteJoueur()
    	{
    		var nbvente = $F('nbvente');
    		var typevente= $F('typevente');
    		var prix= $F('prix');
    		var idMem = $F('sessionM');
     
    		if(nbvente =="" || typevente =="" || prix== "")
    		{
    			alert('Veuillez remplir tous les champs !');
    		}else if(isNaN(nbvente)||isNaN(prix))
    		{
    			alert('Veuillez saisir des chiffres !');
    		}else if( prix < 0.40 || prix > 1.50 )
    		{
    			alert('Veuillez modifier votre prix !');
    		}else if( nbvente > 100000 )
    		{
    			alert('Vous ne pouvez pas vendre plus de 100000 Unites par lot !');
    		}else{
     
    		  var url = './js/ventemarchejoueur_ajax.php';
    		  var myAjax = new Ajax.Request(
    		  url,
    		  {
    			method: 'post',
    			postBody: 'nbvente='+nbvente+'&typevente='+typevente+'&prix='+prix+'&idM='+idMem,
    			onSuccess: function(transport) {
    				transport.headerJSON;
    				reponseAjoutVenteJoueur;
    			  }
    		  });
     
    		}
     
    	}
    Sauf que... ça marche en local, et toujours pas chez 1&1. Je précise que j'ai du "mapper" via un htacess 1&1 pour forcer le php5, et que j'ai aussi essayé d'inclure le fichier manuellement json.php

    C'est à devenir Zinzin

  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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("X-JSON: " . json_encode($datas));
    Je dis peut-être une bêtise, mais il ne faut pas aussi ajouter un HTTP-Accept ?
    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 du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Points : 63
    Points
    63
    Par défaut
    euh jamais entendu ni vu ça...

    c'est quoi ?

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Attention, les headers ne sont pas fait pour transporter des données...

    Qu'est-ce qui t'empêche de plutot faire quelque chose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-type:application/json");
    json_encode($datas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var res = xhr.responseJSON;
    cf la doc de prototype

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Points : 63
    Points
    63
    Par défaut
    alors j'ai essayé, mais je récupère rien depuis mon fichier php avec cette méthode :

    onComplete: function(transport) {
    var res = transport.responseJSON;
    alert('res'+res);

    }
    Je récupère la valeur "null" dans ma variable res....

    Que dois-je faire?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 202
    Points : 63
    Points
    63
    Par défaut
    en fait mon code était bon, il suffisait de virer la balise fermante de php dans mon fichier de conf ....

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2010, 09h18
  2. [POO] Json et récupération de données sans ajax (iframe ?)
    Par takeda dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 05/12/2008, 20h47
  3. [AJAX] Récupération de données
    Par ThinKiT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2008, 12h35
  4. [AJAX] Récupération de données AJAX -> PHP
    Par TheBuzz dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/06/2008, 18h31
  5. Récupération de donnée formulaire AJAX vers PHP
    Par Starbug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/10/2007, 18h38

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