2016-02-09 3 views
5

ich nur eine JQuery ajax Funktion erstellt einige json-encoded Daten aus PHP abzurufen, hier ist mein Code:Die Verwendung von `header ("Content-Type: application/json");`

Name Datei: 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; 
}) 

und in data.php ich schrieb

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

die Frage ist, wenn ich die Linie von header("Content-type:application/json"); inlöschendie console.log sagen, dass der von ajax zurückgegebene Datentyp string ist.

Und wenn ich dataType : json`` innerhalb der ajax Funktion in bank.php hinzugefügt, so dass die Art Änderungen in object

was ist die Funktion der header("Content-type:application/json"); eigentlich?

+0

Wenn Sie datatype verwenden: Json. dann gibt es keine Notwendigkeit, Header-Funktion zu verwenden, es wird Ihnen Json-Ergebnis geben. Sie müssen nur analysieren oder stringify – Monty

+1

Randnotiz: Header kommen ** vor ** Körper. Wenn Ihr Code nicht abstürzt, liegt das daran, dass Sie die Pufferung der Ausgabe aktiviert haben. –

Antwort

7

Die Funktion header("Content-type:application/json") sendet den http json-Header an den Browser, um ihn darüber zu informieren, welche Art von Daten er erwartet. Sie können alle HTTP-Header für jede Anfrage in Ihrem Browser sehen (Wenn Sie Chrome offene Entwickler-Tools verwenden, gehen Sie zu Netzwerk, passen Sie die Ansicht und laden Sie die Seite neu, Sie werden alle Anfragen von Ihrem Browser sehen, wenn Sie auf eine klicken Bei jeder dieser Anfragen klicken Sie dann auf Kopfzeilen, die Kopfzeilen jeder Anfrage werden angezeigt.

Wenn Sie diese Funktion verwenden, werden Sie den HTTP-Header Content-Type:application/json in der Antwort vom Server gesendet. Wenn Sie es nicht, dass der Server verwenden den Standard senden, die am wahrscheinlichsten ist Content-type:text/html; charset=UTF-8

Wie @Monty angegeben Sie diese Funktion nicht benötigen, wenn Sie dataType: 'json' zu Ihrem AJAX hinzugefügt, wie JQuery, die Daten verarbeiten wird selbst wird gesendet mit Text/HTML-Header. Auch

Siehe: jQuery AJAX Call to PHP Script with JSON Return

Um mehr über Header zu lesen: http-headers-for-dummies

+1

Oder sie, Firefox ist eine Mama – pokeybit

Verwandte Themen