[Javascript] En-tête de type de contenu HTTP et JSON


Answers

Content-Type: application/json est juste en-tête de contenu, l'en-tête de contenu est juste des informations sur le type de données retournées, ex :: JSON, image (png, jpg, etc.), html. Gardez à l'esprit que JSON dans javascript est un tableau ou un objet. Si vous voulez voir toutes les données, utilisez console.log au lieu de l'alerte

alert(response.text);//will alert "[object Object]" string
console.log(response.text);//will logging all data object

Si vous souhaitez alerter JSON d'origine en tant que chaîne, ajoutez des guillemets simples ('):

echo "'" . json_encode(array('text' => 'omrele')) . "'";
//alert(response.text) will alert {"text":"omrele"}

N'utilisez pas de guillemets doubles, cela va confondre javascript car JSON utilise un guillemet double pour chaque valeur et clé:

echo '<script>var returndata=';
echo '"' . json_encode(array('text' => 'omrele')) . '"';
echo ';</script>';

//it will return wrong javascript code: 
<script>var returndata="{"text":"omrele"}";</script>
Question

Ok donc j'ai toujours essayé d'éviter d'utiliser la plupart des propriétés du protocole HTTP ou comment vous pouvez s'il vous plaît les appeler pour la peur de l'inconnu. Cependant je me suis dit que je vais faire face à la peur aujourd'hui et commencer à utiliser les en-têtes à dessein. Ce que j'ai essayé d'accomplir ici, c'est d'envoyer des données json au navigateur et de l'utiliser immédiatement. Par exemple, si j'ai une fonction de gestionnaire ajax sur l'état prêt 4 qui ressemble à

function ajaxHandler(response){
    alert(response.text);
}

et j'ai mis l'en-tête de type de contenu dans mon php

header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));

Ma question est la suivante: Pourquoi est-ce que je ne peux pas accéder directement à la propriété à partir de la fonction gestionnaire, quand le navigateur est clairement dit que les données entrantes sont application/json ?