Cuál es la diferencia entre
contentType: "application/json; charset=utf-8",
dataType: "json",
vs.
contentType: "application/json",
dataType: "text",
contentType
es el encabezado HTTP enviado al servidor, especificando un formato particular. dataType
¿Le estás diciendo a jQuery qué tipo de respuesta esperar? La $.ajax()
documentación tiene descripciones completas de estos también.
En su caso particular, la primera es buscar la respuesta esté en UTF-8
, el segundo no le importa. Además, el primero trata la respuesta como un objeto JavaScript, el segundo la trata como una cadena.
Entonces el primero sería:
success: function(data) {
// get data, e.g. data.title;
}
El segundo:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: la respuesta dada por Nick Craver es incorrecta)
contentType especifica el formato de los datos que se envían al servidor como parte de la solicitud (también se puede enviar como parte de la respuesta, más sobre eso más adelante).
dataType especifica el formato esperado de datos que recibirá el cliente (navegador).
Ambos no son intercambiables.
contentType
es el encabezado enviado al servidor, que especifica el formato de los datos (es decir, el contenido del cuerpo del mensaje) que se envía al servidor. Esto se usa con solicitudes POST y PUT. Por lo general, cuando envía una solicitud POST, el cuerpo del mensaje consta de parámetros pasados como:==============================
Solicitud de muestra:
==============================
La última línea sobre "name = sam & age = 35" es el cuerpo del mensaje y contentType lo especifica como application / x-www-form-urlencoded ya que estamos pasando los parámetros del formulario en el cuerpo del mensaje. Sin embargo, no estamos limitados a solo enviar los parámetros, podemos enviar json, xml, ... de esta manera (enviar diferentes tipos de datos es especialmente útil con los servicios web RESTful):
==============================
Solicitud de muestra:
==============================
Entonces el ContentType esta vez es: application / xml, porque eso es lo que estamos enviando. Los ejemplos anteriores mostraron una solicitud de muestra, de manera similar, la respuesta enviada desde el servidor también puede tener el encabezado Content-Type que especifica lo que el servidor envía de esta manera:
==============================
respuesta de muestra:
==============================
dataType
especifica el formato de respuesta a esperar. Está relacionado con el encabezado Aceptar. JQuery intentará inferirlo en función del tipo de contenido de la respuesta.==============================
Solicitud de muestra:
==============================
La solicitud anterior está esperando XML del servidor.
Con respecto a su pregunta,
Aquí está enviando datos json utilizando el juego de caracteres UTF8, y espera recibir datos json del servidor. Según los documentos de JQuery para dataType,
Entonces, lo que obtienes en el controlador de éxito es el objeto javascript adecuado (JQuery convierte el objeto json por ti)
mientras
Aquí está enviando datos json, ya que no ha mencionado la codificación, según los documentos de JQuery,
y dado que dataType se especifica como texto, lo que obtienes en el controlador de éxito es texto sin formato, según los documentos para dataType,
fuente
según los documentos :
"json"
: Evalúa la respuesta como JSON y devuelve un objeto JavaScript. En jQuery 1.4, los datos JSON se analizan de manera estricta; cualquier JSON con formato incorrecto se rechaza y se genera un error de análisis. (Consulte json.org para obtener más información sobre el formato JSON adecuado)."text"
: Una cadena de texto sin formato.fuente
El cargador jQuery Ajax no funciona bien cuando llama a dos API simultáneamente. Para resolver este problema, debe llamar a las API una por una utilizando la
isAsync
propiedad en la configuración de Ajax. También debe asegurarse de que no haya ningún error en la configuración. De lo contrario, el cargador no funcionará. Por ejemplo, tipo de contenido indefinido, tipo de datos para llamadas POST / PUT / DELETE / GET.fuente