contentTypees el tipo de datos que está enviando, por lo que application/json; charset=utf-8es uno común, como es application/x-www-form-urlencoded; charset=UTF-8, que es el predeterminado.
dataTypees lo que está esperando de vuelta desde el servidor: json, html, text, etc jQuery usar esto para averiguar cómo rellenar los parámetros de la función de éxito.
Si publicas 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 espera lo siguiente:
<div>SUCCESS!!!</div>
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},});
Uno más, si quieres publicar:
name=John&age=34
Entonces no stringifylos datos, y hacer:
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},});
gracias de hecho :) cuál es este "éxito": cierto. ¿es otro archivo json en el backend? ¿Cómo se hace este éxito? eso es lo que realmente me gusta saber
user2759697
2
Eso es solo un objeto ordinario: está hecho sin embargo, el servidor decide hacerlo. Un servidor web puede enviar cualquier cosa que desee: HTML, texto o, en este caso, un objeto JSON con una sola propiedad con el nombre "éxito" y el valor verdadero. No puedo adivinar cuál es el marco de su API, pero en C # en ASP.NET MVC sería algo tan simple como[HttpPost]public JsonResult user(Person postedPerson) { /* Save postedPerson to DB */ return Json(new { success = true }); }
Joe Enos el
1
Preste atención a lo que debe usar en $.ajax({ dataType : "html", ... lugar de $.ajax({ datatype : "html",... So T mayúscula en el tipo de palabra es importante. Compruebe jQuery API
Vadim Levkovsky
1
@Jacques supongo que podría haber hecho requestContentTypey responseDataType, pero, en realidad, una vez que lo ha hecho un par de veces, y que entiende la API, que no serán confundidos suficiente para hacer la tipificación adicional que vale la pena.
Joe Enos
1
@stom La pregunta y mi respuesta fueron específicas de POST, pero si recuerdo, si pasa un objeto simple ordinario como los datos en un GET, lo convertirá en una cadena de consulta con pares clave-valor. No estoy seguro de lo que sucedería si tuviera un objeto complejo con valores anidados, pero no debería ser difícil intentarlo si tiene curiosidad. Sin embargo, nunca haría eso en la vida real; de todos modos, rara vez uso AJAX en un GET.
[HttpPost]public JsonResult user(Person postedPerson) { /* Save postedPerson to DB */ return Json(new { success = true }); }
$.ajax({ dataType : "html", ...
lugar de$.ajax({ datatype : "html",...
So T mayúscula en el tipo de palabra es importante. Compruebe jQuery APIrequestContentType
yresponseDataType
, pero, en realidad, una vez que lo ha hecho un par de veces, y que entiende la API, que no serán confundidos suficiente para hacer la tipificación adicional que vale la pena.De la documentación de jQuery: http://api.jquery.com/jQuery.ajax/
Entonces desea que contentType sea
application/json
y dataType seatext
:fuente
Ver http://api.jquery.com/jQuery.ajax/ , hay mención de tipo de datos y tipo de contenido allí.
Ambos se utilizan en la solicitud al servidor para que el servidor sepa qué tipo de datos recibir / enviar.
fuente