¿Qué es el tipo de contenido y el tipo de datos en una solicitud AJAX?

¿Qué es el tipo de contenido y el tipo de datos en una solicitud POST? Supongamos que tengo esto:

$.ajax({ type : "POST", url : /v1/user, datatype : "application/json", contentType: "text/plain", success : function() { }, error : function(error) { }, 

¿ contentType es lo que enviamos? Entonces, ¿qué enviamos en el ejemplo anterior es JSON y lo que recibimos es texto sin formato? Realmente no entiendo

contentType es el tipo de datos que estás enviando, entonces application/json; charset=utf-8 application/json; charset=utf-8 es común, al igual que application/x-www-form-urlencoded; charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 , que es el predeterminado.

dataType es lo que espera del servidor: json , html , text , etc. jQuery usará esto para descubrir cómo llenar el parámetro de la función de éxito.

Si está publicando algo como:

 {"name":"John Doe"} 

y esperando volver:

 {"success":true} 

Entonces deberías tener:

 var data = {"name":"John Doe"} $.ajax({ dataType : "json", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { alert(result.success); // result is an object which is created from the returned JSON }, }); 

Si esperas lo siguiente:

 
SUCCESS!!!

Entonces deberías hacer:

 var data = {"name":"John Doe"} $.ajax({ dataType : "html", contentType: "application/json; charset=utf-8", data : JSON.stringify(data), success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

Una más, si quieres publicar:

 name=John&age=34 

Luego, no stringify los datos y haz lo siguiente:

 var data = {"name":"John", "age": 34} $.ajax({ dataType : "html", contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional data : data, success : function(result) { jQuery("#someContainer").html(result); // result is the HTML text }, }); 

De la documentación jQuery – http://api.jquery.com/jQuery.ajax/

contentType Cuando envíe datos al servidor, use este tipo de contenido.

dataType Tipo de datos que espera del servidor. Si no se especifica ninguno, jQuery intentará inferirlo en función del tipo MIME de la respuesta

“texto”: una cadena de texto sin formato.

Entonces, quiere que contentType sea application/json y dataType para ser text :

 $.ajax({ type : "POST", url : /v1/user, dataType : "text", contentType: "application/json", data : dataAttribute, success : function() { }, error : function(error) { } }); 

Ver http://api.jquery.com/jQuery.ajax/ , hay mención de datatype y contentType allí.

Ambos se utilizan en la solicitud al servidor para que el servidor sepa qué tipo de datos recibir / enviar.