¿Cuál es el punto de jQuery ajax acepta attrib? ¿Realmente hace algo?


Pasó una hora sólida tratando de resolver por qué en la tierra este (coffeescript)

$.ajax
  accepts: "application/json; charset=utf-8"

Hizo absolutamente nada para cambiar el encabezado accepts, mientras que este

$.ajax
  dataType: "json"

Establece correctamente el encabezado accepts en application/json; charset=utf-8

Totalmente confundido, ¿me estoy perdiendo algo o es la acepta attrib una broma de los Inocentes todo el año?

Author: virtualeyes, 2012-06-16

1 answers

Como siempre la documentación es tu amiga:

Acepta

Predeterminado: depende del tipo de datos

El tipo de contenido enviado en el encabezado de solicitud que le dice al servidor qué tipo de respuesta recibirá acepta a cambio. Si la configuración accepts necesita modificación, es se recomienda hacerlo una vez en el $.Método ajaxSetup ().

Tipo de datos

Predeterminado: Conjetura inteligente (xml, json, script o html)

El tipo de datos que está esperando de vuelta del servidor. Si ninguno se especifica, jQuery intentará inferirlo basado en el tipo MIME de la respuesta (un tipo XML MIME producirá XML, en 1.4 JSON producirá un objeto JavaScript, en 1.4 script ejecutará el script, y cualquier otra cosa será devuelta como una cadena). Los tipos disponibles (y el resultado pasado como primer argumento a su devolución de llamada de éxito) son:

"xml": Devuelve un documento XML que puede ser procesado a través de jQuery.

"html": Devuelve HTML como texto sin formato; se evalúan las etiquetas de script incluidas cuando se inserta en el DOM.

"script": Evalúa la respuesta como JavaScript y lo devuelve como texto sin formato. Deshabilita el almacenamiento en caché anexando un parámetro de cadena de consulta, _=[TIMESTAMP], a la URL a menos que la caché la opción está establecida en true. Nota: Esto convertirá los mensajes en GETs para solicitudes de dominio remoto.

"json": Evalúa la respuesta como JSON y devuelve un objeto JavaScript. En jQuery 1.4 los datos JSON se analizan en una manera estricta; cualquier JSON malformado es rechazado y un error de análisis es lanzar. (Véase json.org para obtener más información sobre el formato JSON adecuado.)

"jsonp": Carga en un bloque JSON usando JSONP. Añade un extra ?callback=? al final de su URL para especificar la devolución de llamada. Desactivar almacenamiento en caché mediante la adición de un parámetro de cadena de consulta,
_=[TIMESTAMP], a la URL a menos que la opción caché esté establecida en true.

"text": Un texto sin formato cadena. múltiples valores separados por espacios: A partir de jQuery 1.5, jQuery puede convertir un tipo de datos de lo que recibió en el encabezado Content-Type a lo que necesita. Por ejemplo, si desea que una respuesta de texto sea si se trata como XML, utilice " text xml" para el tipo de datos. También puede hacer un JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml."Del mismo modo, una cadena abreviada como" jsonp xml" primero intentar convertir de jsonp a xml, y, fallando eso, convertir de jsonp a texto, y luego de texto a xml.

Ahora de vuelta a su problema. No estoy familiarizado con cofescript, pero al contrario de dataType que es una cadena, el parámetro accepts es un mapa y debe usarse de la siguiente manera:

$.ajax({
    url: ...
    dataType: 'json',
    accepts: {
        xml: 'text/xml',
        text: 'text/plain'
    }
});
 25
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-07 15:15:56