Bonsoir les hardwaïriens
Je voudrais récupérer du JSON généré en PHP.
Mon code PHP est le suivant :
Code :
- $retour["header"] = utf8_encode (addslashes($header));
- $retour["article"] = utf8_encode (addslashes($article));
- $retour["footer"] = utf8_encode (addslashes($footer));
- $json = json_encode($retour );
- header('Content-Type: application/json');
- echo $json;
|
Première question, (par curiosité, ma vrai question est la 2nd) pourquoi même quand je met "riri", "fifi" et "loulou" dans mes trois variables $header, $article et $footer, et que au lieu de bêtement afficher la variable $json, je fais :
Code :
- $errorJSON = "";
- switch (json_last_error()) {
- //case JSON_ERROR_NONE:
- //$error = ' - Aucune erreur';
- //break;
- case JSON_ERROR_DEPTH:
- $errorJSON = ' - Profondeur maximale atteinte';
- break;
- case JSON_ERROR_STATE_MISMATCH:
- $errorJSON = ' - Inadéquation des modes ou underflow';
- break;
- case JSON_ERROR_CTRL_CHAR:
- $errorJSON = ' - Erreur lors du contrôle des caractères';
- break;
- case JSON_ERROR_SYNTAX:
- $errorJSON = ' - Erreur de syntaxe ; JSON malformé';
- break;
- case JSON_ERROR_UTF8:
- $errorJSON = ' - Caractères UTF-8 malformés, probablement une erreur d\'encodage';
- break;
- default:
- $errorJSON = ' - Erreur inconnue';
- break;
- }
- if( $errorJSON == "" ){
- echo $json;
- } else {
- echo utf8_encode ('{"header":"","article":"Attention, la production du json a provoqué l\'erreur'.$errorJSON .', contacter l\'administrateur.","footer":""}');
- }
|
Alors systématiquement, l'erreur JSON_ERROR_SYNTAX est levée ? (alors que la variable $json contient tout ce qu'il faut) ?
2ième question :
Coté client, j'utilise jquery, et j'ai ce code là :
Pour le HTML :
Code :
- <div id="header">header
- </div>
- <div id="article"></div>
- <div id="footer">footter</div>
|
Pour le JQuery :
Code :
- function recupererArticle(id){
- console.debug("fonction recupererArticle", id);
- //$("#numero_article" ).val(id);
- //$("#article" ).load("article_print.ajax.php?idArticle=" + id);
- $.ajax({
- url: "article_print.ajax.php?idArticle="+id, // url de la page à charger
- cache: false, // pas de mise en cache
- dataType: "jsonp",
- success:function(jsonRetour){ // si la requêté est un succès
- console.debug(jsonRetour);
- /*valueRetour = JSON.parse(jsonRetour);
- $("#header" ).html(valueRetour.header);
- $("#article" ).html(valueRetour.article);
- $("#footer" ).html(valueRetour.footer);*/
- },
- error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
- value_html ="attention, erreur durant la requette, veuillez réessayer ultérieurement";
- }
- });
- }
|
et cela provoque toujours l'erreur (les 3 variables contiennent du HTML):
Code :
- invalid label
- {"header":"<b>Article n\u00b0 2(ajoute... 14hXX )","article":"","footer":""}
|
Quelqu'un serait pourquoi ? J'ai regardé plein de site sur le sujet, chacun y va de sa solution, mais aucune ne marche (d'où les transformations en UTF8 et l'ajout des antislash)
Merci par avance !
Message édité par naeco le 10-09-2011 à 23:12:17