Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 12h06   #1
Invité régulier
 
Inscription : mai 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 29
Points : 6
Points : 6
Par défaut Ajax et Json - création d'un .json par PHP

Hello,


Le problème a plus l'air de se situer aux deuxième reply. Je le laisse pour ceux qui veulent savoir pourquoi je veux m'en servir.
Après quelques heures d'arrachage de cheveux, je viens le partager ici.

Je suis en train de réaliser une page en ajax, dans lequel il sera possible de faire un devis. Suivant les choix, les prix,délais, l'affichage du produit seront actualisés.

Mon souci est le suivant : lors d'un évènement (un onblur ou onchange), plusieurs parties de ma page doivent s'actualiser.

Au début je faisais ça de cette façon :

Code :
1
2
 
<input id="support" class="mesinputs" onblur="javascript:choixsupport(); calculprix(); affichSupport();"/>
La première fonction enregistre le choix dans un objet PHP. La deuxième recalcule le prix et l'affiche. La dernière actualise le support. Ce qu'il n'allait pas c'est que le support s'affichait, alors que le choix n'était pas toujours modifié.

Je me suis donc documenté un peu plus sur l'Ajax et j'ai trouvé sur developpez.com, un framework pour l'ajax. J'aimerais donc m'en servir, étant donné qu'on peut gérer mieux l'Ajax, dans mon cas surtout graçe à onSucces.

J'essaye donc de gérer ça de la sorte.

index.html
Code :
1
2
 
<input id="support" class="mesinputs" onblur="javascript:choixsupport(idElement);"/>
choix.js
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function choixSupport(idElement){
//affichSupport();verifEmplacement(1,'.$this->id.');
 
      var idRecepteur = "btntransfert";
     //var idRecepteur = "visumarquage";
      var fichierPHP = "ajax/choixsupport.php"
 
      new Ajax.Updater(
 
             idRecepteur,
	fichierPHP,
	{
	       method: 'post',
	       parameters : {support : $F("support"+idElement), idelement : idElement},
	       onSuccess : function (json){
 
	        alert(json.fonctions.choix);
	        }
	}
        );
 
 
}
choixsupport.php
Code :
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
 
<?php
 
require "./php/class/devis.php";
 
session_start();
 
if(isset($_POST["support"]))		$support = $_POST["support"];
if(isset($_POST["idelement"]))	$idelement = $_POST["idelement"];
 
$_SESSION['mondevis']->tabElement[$idelement]->support = $support;
$varDyn = $_SESSION['mondevis']->tabElement[$idelement]->couleur ;
 
$jsonFormat = array(
		'fonctions' => array(
			'choix' => 'verifEmplacement('.$varDyn.')',
			'choix' => 'affichSupport('.$idelement.')',
			)
 
		);
echo json_encode($jsonFormat);
header("X-JSON : ".json_encode($jsonFormat));
 
 
?>
Apparement le fichier JSON se crée bien, mais je n'arrive pas à l'exploiter du coté javascript.

Est-ce que quelqu'un voit une erreur ? Ma méthode est elle bonne ou un peu tordu ?

Merci pour vos réponse.
versus68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 10h14   #2
Invité régulier
 
Inscription : mai 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 29
Points : 6
Points : 6
J'ai ré-essayé ce matin. Je n'arrive toujours pas à faire marcher tout ça.

Je me demande si le JSON n'est pas mal foutu.

J'ai essayé de plusieurs manière, aucune ne fonctionne :s.

PHP :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$jsonFormat = array(
	"fonctions"=>array(
		1=>"calculPrix()",
		2=>"calculPrix1()",
		3=>"calculPrix2()",
		)
	);
 
$jsonFormat = json_encode($jsonFormat);
echo $jsonFormat;
 
// Renvoi : {"fonctions":{"1":"calculPrix()","2":"calculPrix1()","3":"calculPrix2()"}}
Code :
1
2
3
4
5
6
7
8
 
 
$jsonFormat = array();
$jsonFormat['fonctions'][] = 'calculPrix()';
$jsonFormat['fonctions'][] = 'calculPrix1()';
$jsonFormat['fonctions'][] = 'calculPrix2()';
 
// Renvoi : {"fonctions":["calculPrix()","calculPrix1()","calculPrix2()"]}
Quelqu'un saurait comment construire un tableau assiossatif JSON avec PHP s'il vous plait ?
versus68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 10h52   #3
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
Citation:
Common callbacks

When used on individual instances, all callbacks (except onException) are invoked with two parameters: the XMLHttpRequest object and the result of evaluating the X-JSON response header, if any (can be null).
Attention, le premier paramètre de onSuccess, c'est l'objet XmlHttpRequest. Ton JSOn est le deuxième paramètre.
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 11h46   #4
Invité régulier
 
Inscription : mai 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 29
Points : 6
Points : 6
Bien vu ! C'est exactement ça mon problème.

J'avais essayé avec 2 paramètre, mais cela ne marchait pas, et vu que qd je n'en mettais que un et que je le testais avec un alert, j'obtenais OBject[Object], je pensais que les deux n'étaient pas nécessaire.

Le problème venait aussi de la création de mon json :
j'écrivais :
header('X-JSON :'.$json);
au lieu de :
header('X-JSON:'.$json);

Le problème était un espace entre le X-JSON et le :.... !!

Bon maintenant ça devrait aller beaucoup mieux.

Merci DoubleU, tu m'as completement débloqué, parce que j'étais au point mort là et ça commencait à ne pas plaire à mon maitre de stage.

Merci, merci et merci. (jsuis happy ^^)
versus68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 15h09   #5
Invité régulier
 
Inscription : mai 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 29
Points : 6
Points : 6
Coucou, c'est re-moi !

En fait, j'ai été content pas si longtemps que ça. J'ai une dernière question. Je n'arrive pas à parser le JSON.

En fait, j'arrive à récuperer les fonctions, mais sous forme de string. Du coup, je n'arrive pas à les exécuter. J'ai trouvé des parseur(s) sur json.org. Mais avec des explications en anglais qui ne m'ont pas trop parlé. J'ai essayé le code source et ce n'était pas mieux.

Après, promis, jfinis tout seul !
versus68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2008, 15h51   #6
Modérateur
 
Avatar de DoubleU
 
Inscription : janvier 2006
Messages : 1 107
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 107
Points : 1 118
Points : 1 118
Désolé, je n'utilise jamais le json pour les échanges, je crainds de ne pouvoir t'être dans grand secours ici.
DoubleU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2008, 17h18   #7
Invité régulier
 
Inscription : mai 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 29
Points : 6
Points : 6
Je vais en conclure que ce n'est pas possible. Finalement, j'ai finis par faire autrement et ça a l'air de bien marché.

Néanmoins si quelqu'un sait comment faire, qu'il se manifeste, ça peut toujours être bon à savoir
versus68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h33.


 
 
 
 
Partenaires

Hébergement Web