Acabo de crear una función JQuery ajax para recuperar algunos datos json-encoded de PHP , aquí está mi código:
nombre del archivo: banco.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; }) y en data.php escribí
if(isset($_GET)){ $data = $_GET; echo json_encode($data); header("Content-type:application/json"); } la pregunta es, cuando elimino la línea del header("Content-type:application/json"); en data.php , el archivo console.log indica que el tipo de datos devueltos por ajax es string .
Y cuando agregué dataType : json`` dentro de la función ajax en bank.php el tipo cambia a object
Entonces, ¿cuál es la función del header("Content-type:application/json"); ¿Realmente?
El header("Content-type:application/json") envía el encabezado http json al navegador para informarle qué tipo de datos espera. Puede ver todos los encabezados http para cada solicitud en su navegador (si está utilizando las herramientas de desarrollo abiertas de Chrome, vaya a la red, ajuste la vista y vuelva a cargar la página, verá todas las solicitudes realizadas por su navegador, si hace clic en cualquiera en cualquiera de estas solicitudes, luego haga clic en los encabezados, verá los encabezados de cada solicitud).
Cuando utilice esta función, notará el encabezado http Content-Type:application/json en la respuesta enviada desde el servidor. Si no lo usa, el servidor enviará el valor predeterminado, que probablemente sea Content-type:text/html; charset=UTF-8
Como dijo @Monty, no necesita esta función si agregó dataType: 'json' a su AJAX, ya que Jquery manejará los datos incluso si se envían con encabezado de texto/html.
Ver también: jQuery AJAX Call to PHP Script with JSON Return
Para leer más sobre encabezados: http-headers-for-dummies