Bonjour à tous,
Je retombe sur un problème que j'avais laissé de côté il y a quelques temps et je fais appel à vous pour voir si c'est réellement une impasse ou si il y a une solution.
Le contexte:
Une requête Ajax qui attend un JSon pour construire des objets ExtJS.
La réponse attendu dans le json est:
Actuellement du côté php c'est codé comme ça:
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 { success: "1" ,data : [ { title:'Documents' ,id:'myId' ,items:[ new MY.ExtJS.Object( { url:'action.php' ,id:'myObjectId' }) ] }] }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 [...] $sNewGridObject = "[{title:'".$aComponentItem['title']."'" .",id:'".$aComponentItem['idTab']."'" .",items:[new MY.ExtJS.Object({" ."url:'".$aComponentItem['urlDoc']."'" .",id:'".$aComponentItem['idGrid']."'}) ]}]"; $response = '{success: "1", data : '.$sNewGridObject.'}'; $this->getResponse()->clearBody(); $this->getResponse()->setBody($response); [...]
Je voudrais écrire cela plus "proprement" sous forme de tableau, car ici je n'ai qu'un petit extrait du fichier JSon, qui en fait va comporter plusieurs nouveaux objets javascript et plusieurs "niveaux", et là, ça devient tout de suite beaucoup moins lisible et moins facile à gérer. Je travail déjà de cette façon pour beaucoup de JSon, mais les autres ne comportent pas de nouveau objets...
Voila l'écriture à laquelle je voudrais parvenir:
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 $aItemsMain = array(); $sNewGridObject = "new PDM.manageFiles.directoryFilesgrid({" ."url:'".$aComponentItem['urlDoc']."'" .",id:'".$aComponentItem['idGrid']."'})"; $aItemsMain[] = array ( 'title' => $aComponentItem['title'] ,'id' => $aComponentItem['idTab'] ,'items' => array($sNewGridObject) ); $jData = Zend_Json::encode($aItemsMain); $response = '{success: "1", data : '.$jData.'}'; $this->getResponse()->clearBody(); $this->getResponse()->setBody($response);
Oui mais voilà, avec cette écriture php, le JSon ressemble à ça:
Ce qui pourrait être parfait... Si il n'y avait pas les guillemets autour de la déclaration de mon object ExtJS (en rouge). Du coup je récupère une erreur javascript car le code entre guilemets est prit pour une chaine de caractères et n'est pas interprété.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 { success: "1" , data : [ { "title":"Documents" ,"id":myId" ,"items":[ "new PDM.manageFiles.directoryFilesgrid( { url:'action.php' })" ] }] }
Est-ce qu'il serait donc possible de faire en sorte que le php n'écrive pas de guillemets autour la variable : $sNewGridObject ?
J'espère avoir été clair, et je vous remercie par avance pour votre aide.
N'hésitez pas à demander si il vous faut des éléments en plus.
Le Duc
Partager