tutorial - récupérer données json javascript




En-tête de type de contenu HTTP et JSON (2)

L'en Content-Type tête Content-Type est simplement utilisé comme information pour votre application. Le navigateur ne se soucie pas de ce que c'est. Le navigateur vous renvoie simplement les données de l'appel AJAX. Si vous voulez l'analyser en JSON, vous devez le faire par vous-même.

L'en-tête est là pour que votre application puisse détecter quelles données ont été renvoyées et comment elles doivent être gérées. Vous devez regarder l'en-tête, et si c'est application/json alors l'analyser en JSON.

C'est en fait comment fonctionne jQuery. Si vous ne lui dites pas quoi faire avec le résultat, il utilise le type de Content-Type pour détecter ce qu'il faut faire avec.

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 ?


Le code ci-dessous m'aide à retourner un objet json pour js dans le FronEnd

Mon code de modèle template_file.json

{
    "name": "{{name}}"
}

code supporté par python

def download_json(request):
    print("Downloading json")
    #response render a template as json object
    return HttpResponse(render_to_response("template_file.json",dict(name="Alex Vera")),content_type="application/json")    

url.py

url(r'^download_as_json/$',views.download_json,name='download_json-url')

Code Jquery pour FrontEnd

  $.ajax({
        url:'{% url 'download_json-url' %}'        
    }).done(function(data){
        console.log('json ',data);
        console.log('Name',data.name);
        alert('hello '+data.name);
    });






http