2016-02-09 8 views
5

właśnie utworzona JQuery ajax funkcji do pobierania danych z niektórych json-encodedPHP, oto mój kod: nazwaWykorzystanie `header ("Content-Type: application/json");`

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

aw data.php pisałem

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

pytanie brzmi, kiedy usunąć linię header("Content-type:application/json"); w data.php the console.log powiedzieć, że typ danych zwróconych przez ajax jest string.

A kiedy dodałem dataType : json`` wewnątrz funkcji ajax w bank.php zmiany typu do object

więc to, co jest funkcją header("Content-type:application/json"); faktycznie?

+0

Jeśli używasz dataType: JSON. wtedy nie ma potrzeby korzystania z funkcji nagłówka, da wynik json. musisz tylko sparsować lub stringify – Monty

+1

Uwaga boczna: nagłówki przychodzą ** przed ** treścią. Jeśli Twój kod się nie zawiesza, to dlatego, że masz włączone buforowanie wyjściowe. –

Odpowiedz

7

Funkcja header("Content-type:application/json") wysyła nagłówek http json do przeglądarki, aby poinformować go, jakiego rodzaju danych spodziewa się. Możesz zobaczyć wszystkie nagłówki http dla każdego żądania w przeglądarce (Jeśli używasz narzędzi Chrome Open Developer, przejdź do sieci, dostosuj widok i ponownie załaduj stronę, zobaczysz wszystkie żądania Twojej przeglądarki, jeśli klikniesz dowolne na każdym z tych żądań, a następnie kliknij nagłówki, zobaczysz nagłówki każdego żądania).

Podczas korzystania z tej funkcji zauważysz nagłówek http Content-Type:application/json w odpowiedzi wysłanej z serwera. Jeśli nie używać go serwer wyśle ​​domyślnego który najprawdopodobniej jest Content-type:text/html; charset=UTF-8

Jak @Monty stwierdził, że nie potrzebuje tej funkcji, jeśli dodany dataType: 'json' do AJAX w jQuery będzie obsługiwać dane nawet jest wysyłany z nagłówkiem text/html.

Zobacz także: jQuery AJAX Call to PHP Script with JSON Return

Aby dowiedzieć się więcej na temat nagłówków: http-headers-for-dummies

+1

Albo ona, Firefox to mama – pokeybit