Cita:
Iniciado por Albuss Me gustaria abusar un poco mas y preguntarte por que esa cabecera hace que funcione y no la propia para enviar un json : "application/json" En los foros anglosajones todos los ejemplos que lei utilizaban este ultimo.
¡justo lo que pensaba! lee este tema de stackoverflow,
http://stackoverflow.com/questions/9...equest-payload. primero tienes que tener en cuenta que un content type es una forma de indicar el tipo de documento. piensalo de esta forma... cuando el navegador hace un request de algún recurso, el servidor inicializa la cabecera Content-Type. esto básicamente le dice al cliente el tipo de aplicación que debe utilizar para leer el recurso. de modo que text/html lo analiza un motor html y un image/jpeg lo analiza otra aplicación para crear la imagen en pantalla. (obvio, todas estas mini aplicaciones estan vinculadas al navegador o cliente.)
ahora bien, según como yo lo entiendo. en el proceso inverso donde es el cliente quien envía la data al servidor, el contenido puede sufrir una transformación según el content type indicado. en el caso de la variable php $_POST, este contenedor además de estar vinculado al método de envio POST también esta vinculado al content type application/x-www-form-urlencoded. cuando tu le indicas a ajax que ese es el content-type a enviar, el navegador toma la data y la transforma según las especificaciones de ese content type. entonces, al tu cambiar el content type por application/json, la preparación del contenido es distinta a application/x-www-form-urlencoded. es por eso que no puedes leer el json desde $_POST. en ese caso tienes que buscar otra alternativa donde el lenguaje servidor (php en tu caso) lea el payload del request. en php parece que es mediante un wrapper con url php://input.
no tengo idea de lo que leistes en las otras webs, pero estoy casi seguro que iba aplicado en algún contexto, quizas jquery. notese que jquery tiene su propia manera y probablemente al final esta generando una petición distinta al content type indicado en ajax.