web-dev-qa-db-fra.com

L'utilisation de `header (" Content-type: application / json ");`

Je viens de créer une fonction JQuery ajax pour récupérer des données json-encoded De PHP, voici mon code:

nom de fichier: bank.php

$('form').on('submit', function(){

        var datatobesent  = $(this).serialize();
        $.ajax({
            data: datatobesent,
            url:'data.php',
            type:'GET'
        })
        .done(function(data){
            console.log(typeof(data));
        });
        return false;
})

et en data.php j'ai écrit

if(isset($_GET)){
    $data = $_GET;
    echo json_encode($data);
    header("Content-type:application/json");
}

la question est, quand je supprime la ligne de header("Content-type:application/json"); dans data.php le console.log indique que le type de données retourné par ajax est string.

Et quand j'ai ajouté dataType : Json`` à l'intérieur de la fonction ajax dans bank.php Le type change en object

alors quelle est la fonction de header("Content-type:application/json"); en fait?

9
januaryananda

La fonction header("Content-type:application/json") envoie l'en-tête http json au navigateur pour l'informer du type de données qu'il attend. Vous pouvez voir tous les en-têtes http pour chaque demande dans votre navigateur (Si vous utilisez chrome ouvrez les outils de développement, accédez au réseau, ajustez la vue et rechargez la page, vous verrez toutes les demandes effectuées) par votre navigateur, si vous cliquez sur n'importe laquelle de ces demandes, puis cliquez sur les en-têtes, vous verrez les en-têtes de chaque demande).

Lorsque vous utilisez cette fonction, vous remarquerez l'en-tête http Content-Type:application/json dans la réponse envoyée par le serveur. Si vous ne l'utilisez pas, le serveur enverra la valeur par défaut qui est probablement Content-type:text/html; charset=UTF-8

Comme @Monty l'a déclaré, vous n'avez pas besoin de cette fonction si vous avez ajouté dataType: 'json' à votre AJAX car Jquery gérera les données même si elles sont envoyées avec un en-tête text/html.

Voir aussi: jQuery AJAX Appel à PHP Script avec retour JSON

Pour en savoir plus sur les en-têtes: http-headers-for-dummies

17
Ahmed Essam