Onglet et pré-enroulé autour de la sortie JSON dans Chrome

J’utilise ce code simple pour imprimer un tableau sous forme de structure JSON.

header('Content-Type: application/json'); echo json_encode($this->data, JSON_PRETTY_PRINT); 

J’utilise la version de Chrome 28.0.1500.95 m. Pour une raison quelconque, la sortie est encapsulée dans une balise pré avec un caractère de tabulation (c.-à-d. \t ) au début.

JSON semble bien parsingr, mais j’obtiens toujours ce caractère de tabulation lorsqu’aucune donnée n’est envoyée. Comment puis-je réparer cela ?

 
 { "title": "Node", "items": [ { "label": "Do stuff", "icon": "..\/ui\/images\/icons\/16x16\/icon.png", "action": "dostuff" } ] }

Edit: Voici le code sur le côté jQuery:

 $.ajax({ url : "/myproject/getmenu/", type : 'GET', dataType: "json", success : function(data) { //alert(JSON.ssortingngify(data,undefined,2)); if (jQuery.isEmptyObject(data)) { return; } title = data.title; items = data.items; selected.contextPopup({ title : title, items : items }); } }); 

Vous devez supprimer le code qui ajoute la


. Cela fait en sorte que votre réponse soit un JSON non valide (les espaces blancs ne sont pas un problème si c'est joli) et jQuery échoue donc lors de son parsing.

Dans la documentation PHP, je ne voyais rien sur le fait que la réponse JSON soit encapsulée dans


mais vous pourriez sûrement l'essayer sans l'indicateur. Je m'assurerais également de vérifier si l'étiquette est bien dans votre réponse. Si vous utilisez view-source et qu'une extension de navigateur JSON-pretty-printing est installée, elle peut être ajoutée par cette extension et ne pas figurer dans le code JSON réel géré par votre code JavaScript.

hmmm, je cherchais une réponse correcte moi-même mais aucun d’entre eux ne travaillait. mais j’ai essayé de faire comme suit et cela a fonctionné pour moi …

1- Je règle le type de contenu sur application / json

2- J’ai utilisé le die(json_encode($this->data)) au lieu de echo json_encode($this->data)

J’espère que cela fonctionnera pour vous bien que je suppose que c’est un peu trop tard: D pardonnez-moi de répondre à une vieille question. J’ai récemment rencontré le même problème moi-même