- 1
[Opened] Probleme jResponseJson
Posted by FapFap on 02/19/2014 15:05
Bonjour,
J'ai une function php toute simple
function connexion() { $rep = $this->getResponse('json'); $rep->data = array('test' => 1); jLog::dump($rep); return $rep; }
Si je vais sur l'url de la fonction, en local, j'ai bien {"test":1}
Sur ma version de test en ligne (serveur ovh), j'ai {"test":1
Et sur ma version en prod, la fonction me retourne bien le '}' manquant (du coup je commit pas pour l'instant :D)
Il manque la '}', comme ma variable n'est "pas finis", ma fonction ajax ne marche plus !
Le dump dans la fonction connexion donne :
default jResponseJson::__set_state(array( 'data' => array ( 'test' => 1, ), '_type' => NULL, '_httpHeaders' => array ( ), '_httpHeadersSent' => false, '_httpStatusCode' => '200', '_httpStatusMsg' => 'OK', '_outputOnlyHeaders' => false, 'httpVersion' => '1.1', 'forcedHttpVersion' => false, ))
J'ai tripoté la class jResponseJson, pour tenter de comprendre :
public function output() { if($this->_outputOnlyHeaders) { $this->sendHttpHeaders(); return true; } $this->_httpHeaders['Content-Type'] = "application/json"; jLog::dump($this->data, "this data jresponsejson"); $content = json_encode($this->data); jLog::dump($content, "content jresponsejson"); $this->_httpHeaders['Content-length'] = strlen($content); jLog::dump($this->_httpHeaders['Content-length'], "lengh httpHeader jresponsejson"); $this->sendHttpHeaders(); echo $content; return true; }
Les 3 dump me donnent respectivement :
this data jresponsejson: array ( 'test' => 1, ) content jresponsejson: '{"test":1}' lengh httpHeader jresponsejson: 10
Donc, si j'en crois mes dumps, tout est bien convertis en json, alors pourquoi il me manque une '}' ?
Cordialement,
[Opened] Probleme jResponseJson
Posted by FapFap on 02/20/2014 10:28
J'ai aussi testé avec
function connexion() { $rep = $this->getResponse('json'); return $rep; }
Cela me retourne
nul
Il manque une lettre ..
[Opened] Probleme jResponseJson
Posted by FapFap on 02/26/2014 11:18
Up. Je n'ai toujours pas résolu le probleme (et passer par du redirect au lieu d'ajax est un peu fatigant).
Edit :
J'ai modifie cette ligne dans le jResponseJson.class.php
$this->_httpHeaders['Content-length'] = strlen($content) + 1;
Maintenant j'ai bien ma '}', mais bon, je comprend toujours pas pourquoi j'aurais besoin de mettre un +1 sur le strlen, sachant qu'il comptait bien le nombre de caracteres.
[Opened] Re: Probleme jResponseJson
Posted by ornythorink on 02/26/2014 20:12
Bonsoir
J'ai eu le même genre problème avec une réponse de type json. Le ] de clôture était absent de manière aléatoire. J'ai mis en place une détection du dernier caractère et une complétion si besoin. Je n'ai pas regardé comment était renvoyé la réponse. Du coup j'imagine que ce n'est pas juste un simple json_encode. ( avec sûrement une bonne raison )
[Opened] Probleme jResponseJson
Posted by FapFap on 02/27/2014 10:01
J'ai résolu le probleme, j'ai tout simplement supprimé la lib, et je l'ai retéléchargée, et ca marche .. Un vrai bug mystique !
Edit: En fait non, toujours le meme probleme. Maintenant il faut que je rajoute un +30 sur le strlen pour que ca marche ..
[Opened] Probleme jResponseJson
Posted by FapFap on 03/03/2014 16:52
Edit 2: En fait, le probleme vient d'un include de class, si je le met en commentaire, le rep->data n'est pas coupé. Forcement j'ai un peu besoin de la class :D Je continue de chercher donc.
[Opened] Re: Probleme jResponseJson
Posted by FapFap on 03/03/2014 18:07
Edit 3: En fait, j'ai supprimé '?>' a la fin de ma class, et hop ca marche. Vu que je l'avais fermé, il y a eu un petit retour chariot qui s'était inséré. D'ou le caractere en moins sur ma rep json.
[Opened] Probleme jResponseJson
Posted by laurentj on 03/06/2014 10:07
Salut,
en lisant la discussion, quel suspens :-) Heureusement, la solution est trouvée, ouf !
- 1