Método ajax() de jQuery ajax
Ejemplo
Cargar un fragmento de texto mediante AJAX:
Código jQuery:}
$(document).ready(function(){ $("#b01").click(function(){ htmlobj=$.ajax({url:"/jquery/test1.txt",async:false}); $("#myDiv").html(htmlobj.responseText); }); });
Código HTML:
<div id="myDiv"><h2>Deje que AJAX cambie este texto</h2></div> <button id="b01" type="button">Cambiar Contenido</button>
Definición y uso
El método ajax() carga datos remotos a través de solicitudes HTTP.
Este es el método AJAX de nivel inferior de jQuery. Véase $.get, $.post, etc. para una implementación de nivel superior fácil de usar. $.ajax() devuelve el objeto XMLHttpRequest que ha creado. En la mayoría de los casos, no es necesario operar directamente con esta función, a menos que necesite operar opciones no comunes para obtener más flexibilidad.
En el caso más simple, $.ajax() se puede usar directamente sin parámetros.
Atención:Todas las opciones pueden ser configuradas globalmente a través de la función $.ajaxSetup().
sintaxis
jQuery.ajax([ajustes])
parámetros | descripción |
---|---|
ajustes |
Opcional. Conjunto de pares clave para configurar solicitudes Ajax. Se puede configurar cualquier opción predeterminada a través de $.ajaxSetup(). |
parámetros
- opciones
-
Tipo: Object
Opcional. Configuración de solicitud Ajax. Todas las opciones son opcionales.
- async
-
Tipo: Booleano
Valor predeterminado: true. Bajo la configuración predeterminada, todas las solicitudes son asincrónicas. Si es necesario enviar solicitudes sincrónicas, configure esta opción como false.
Atención, las solicitudes sincrónicas bloquearán el navegador, y el usuario debe esperar a que se complete la solicitud antes de poder ejecutar otras operaciones.
- beforeSend(XHR)
-
Tipo: Función
Se puede modificar el objeto XMLHttpRequest antes de enviar la solicitud, como agregar encabezados HTTP personalizados.
El objeto XMLHttpRequest es el único parámetro.
Este es un evento Ajax. Si se devuelve false, se puede cancelar esta solicitud Ajax.
- cache
-
Tipo: Booleano
Valor predeterminado: true, cuando dataType es script y jsonp, el valor predeterminado es false. Establecer false no almacenará esta página en caché.
Nuevas características de jQuery 1.2.
- complete(XHR, TS)
-
Tipo: Función
Función de devolución de llamada después de que se complete la solicitud (se llama después de que se complete la solicitud, ya sea que sea exitosa o fallida).
Parámetros: objeto XMLHttpRequest y una cadena que describe el tipo de solicitud.
Este es un evento Ajax.
- contentType
-
Tipo: Cadenas
Valor predeterminado: "application/x-www-form-urlencoded". El tipo de codificación de contenido para enviar información al servidor.
El valor predeterminado es adecuado para la mayoría de los casos. Si se pasa explícitamente un content-type a $.ajax(), se enviará al servidor (incluso si no hay datos que enviar).
- context
-
Tipo: Object
Este objeto se utiliza para establecer el contexto de las funciones de devolución de llamada relacionadas con Ajax. Es decir, hacer que this dentro de la función de devolución de llamada apunte a este objeto (si no se establece este parámetro, then this apunta a los parámetros options transmitidos al llamar a esta solicitud AJAX). Por ejemplo, si se especifica un elemento DOM como parámetro context, se establece el contexto de la función de devolución de llamada success para este elemento DOM.
como así:
$.ajax({ url: "test.html", context: document.body, success: function(){ $(this).addClass("done"); });
- data
-
Tipo: Cadenas
Los datos enviados al servidor. Se convertirán automáticamente al formato de cadena de solicitud. Se adjuntará al final de la URL en solicitudes GET. Consulte la descripción de las opciones processData para prohibir esta conversión automática. Debe estar en formato Key/Value. Si es un array, jQuery lo convertirá automáticamente para valores diferentes del mismo nombre. Por ejemplo, {foo: ["bar1", "bar2"]} se convertirá en '&foo=bar1&foo=bar2'.
- dataFilter
-
Tipo: Función
La función de preprocesamiento de datos originales devueltos por Ajax. Proporciona dos parámetros: data es los datos originales devueltos por Ajax, y type es el parámetro dataType proporcionado al llamar a jQuery.ajax. El valor devuelto por la función se procesará adicionalmente por jQuery.
- dataType
-
Tipo: Cadenas
El tipo de datos de retorno esperado del servidor. Si no se especifica, jQuery lo identificará automáticamente según la información MIME del paquete HTTP, por ejemplo, el tipo MIME XML se identificará como XML. En la versión 1.4, JSON generará un objeto JavaScript, mientras que script ejecutará este script. Luego, los datos devueltos por el servidor se analizarán según este valor y se transmitirán a la función de devolución de llamada. Los valores disponibles son:
- "xml": devuelve un documento XML, que jQuery puede procesar.
- "html": devuelve información HTML puro; las etiquetas script incluidas se ejecutarán al insertarse en el DOM.
- "script": devuelve código JavaScript puro. No se almacenará automáticamente el resultado. A menos que se configure el parámetro "cache". Nota: en solicitudes remotas (no en el mismo dominio), todas las solicitudes POST se convertirán en solicitudes GET. (porque se usará la etiqueta script del DOM para cargar)
- "json": devuelve datos JSON.
- "jsonp": formato JSONP. Al llamar a la función con formato JSONP, como "myurl?callback=?", jQuery reemplazará automáticamente ? por el nombre de la función correcto para ejecutar la función de devolución de llamada.
- "text": devuelve una cadena de texto pura
- error
-
Tipo: Función
Valor predeterminado: auto (xml o html). Llama a esta función cuando falla la solicitud.
Tiene los siguientes tres parámetros: objeto XMLHttpRequest, información de error, (opcional) objeto de excepción capturado.
Si ocurre un error, la información de error (segundo parámetro) además de null, también puede ser "timeout", "error", "notmodified" y "parsererror".
Este es un evento Ajax.
- global
-
Tipo: Booleano
¿Dispara eventos AJAX globales?. Valor predeterminado: true. Establecer a false no disparará eventos AJAX globales, como ajaxStart o ajaxStop se pueden usar para controlar diferentes eventos Ajax.
- ifModified
-
Tipo: Booleano
Obtén nuevos datos solo cuando los datos del servidor cambian. Valor predeterminado: false. Se utiliza la información de encabezado Last-Modified del paquete HTTP para determinar. En jQuery 1.4, también verificará el 'etag' especificado por el servidor para determinar si los datos no han sido modificados.
- jsonp
-
Tipo: Cadenas
Reescribe el nombre de la función de devolución de llamada en una solicitud jsonp. Este valor se utiliza para reemplazar la parte "callback" en los parámetros de URL de solicitudes GET o POST como "callback=?", por ejemplo {jsonp:'onJsonPLoad'} causará que se envíe "onJsonPLoad=?" al servidor.
- jsonpCallback
-
Tipo: Cadenas
Especifique un nombre de función de retroalimentación para la solicitud jsonp. Este valor se utilizará para reemplazar el nombre de función generado aleatoriamente por jQuery. Esto se utiliza principalmente para que jQuery genere nombres de función únicos, lo que facilita la gestión de solicitudes y permite proporcionar funciones de retroalimentación y manejo de errores de manera más conveniente. También se puede especificar este nombre de función de retroalimentación cuando se desee que el navegador cachee solicitudes GET.
- password
-
Tipo: Cadenas
Se utiliza para la respuesta de la contraseña de la solicitud de autenticación HTTP.
- processData
-
Tipo: Booleano
Valor predeterminado: true. Por defecto, los datos pasados a través de la opción data, si es un objeto (tecnológicamente, siempre que no sea una cadena), se procesan para convertirse en una cadena de consulta, para coincidir con el tipo de contenido predeterminado "application/x-www-form-urlencoded". Si desea enviar información de un árbol DOM u otra información que no desee convertir, configure esto como false.
- scriptCharset
-
Tipo: Cadenas
Sólo se utiliza para modificar forzadamente el charset cuando dataType es "jsonp" o "script" y type es "GET". Generalmente se utiliza cuando el contenido de codificación local y remoto es diferente.
- success
-
Tipo: Función
Función de retroalimentación después de que la solicitud sea exitosa.
Parámetros: los datos devueltos por el servidor, procesados según el parámetro dataType; la cadena que describe el estado.
Este es un evento Ajax.
- traditional
-
Tipo: Booleano
Si desea serializar los datos de manera tradicional, configure esto como true. Consulte el método jQuery.param en la categoría de herramientas.
- timeout
-
Tipo: Número
Establecer el tiempo de espera de la solicitud (milisegundos). Esta configuración sobrescribirá la configuración global.
- type
-
Tipo: Cadenas
Valor predeterminado: "GET")). Método de solicitud ("POST" o "GET"), predeterminado "GET". Nota: otros métodos de solicitud HTTP, como PUT y DELETE, también se pueden usar, pero solo son compatibles con algunos navegadores.
- url
-
Tipo: Cadenas
Valor predeterminado: la dirección de la página actual. La dirección de envío de la solicitud.
- username
-
Tipo: Cadenas
Se utiliza para la respuesta del nombre de usuario de la solicitud de autenticación HTTP.
- xhr
-
Tipo: Función
Es necesario devolver un objeto XMLHttpRequest. Por defecto en IE es ActiveXObject y en otros casos XMLHttpRequest. Se utiliza para sobrescribir o proporcionar un objeto XMLHttpRequest mejorado. Este parámetro no estaba disponible antes de jQuery 1.3.
Funciones de callback
Si se necesita procesar los datos obtenidos con $.ajax(), se debe utilizar el callback: beforeSend, error, dataFilter, success, complete.
beforeSend
Llame a esta función antes de enviar la solicitud y transmítale un objeto XMLHttpRequest.
error
Llame a esta función cuando la solicitud falle. Introduzca el objeto XMLHttpRequest, una cadena que describa el tipo de error y un objeto de excepción (si lo hay).
dataFilter
Llame a esta función después de que la solicitud tenga éxito. Introduzca los datos devueltos y el valor del parámetro 'dataType'. Y debe devolver los nuevos datos (posiblemente procesados) que se transmitirán al callback de éxito.
success
Llame a esta función después de que se realice la solicitud. Introduzca los datos devueltos y una cadena que contenga un código de éxito.
complete
Llame a esta función después de que se complete la solicitud, sin importar si tiene éxito o no. Introduzca el objeto XMLHttpRequest y una cadena que contenga un código de éxito o error.
Tipo de datos
La función $.ajax() depende de la información proporcionada por el servidor para procesar los datos devueltos. Si el servidor informa que los datos devueltos son XML, los resultados se pueden recorrer con métodos XML comunes o selectores de jQuery. Si se detectan otros tipos, como HTML, los datos se tratan como texto.
A través de la opción dataType se puede especificar otros métodos de procesamiento de datos diferentes. Además del simple XML, también se puede especificar html, json, jsonp, script o text.
En el caso de los tipos text y xml, los datos devueltos no se procesan. Los datos se transmiten simplemente al callback de éxito mediante las propiedades responseText o responseHTML de XMLHttpRequest.
Atención:Debemos asegurarnos de que el tipo MIME reportado por el servidor web coincida con el dataType seleccionado. Por ejemplo, si es XML, el servidor debe declarar text/xml o application/xml para obtener resultados consistentes.
Si se especifica el tipo html, cualquier JavaScript incrustado se ejecutará antes de que el HTML se devuelva como una cadena. De manera similar, si se especifica el tipo script, también se ejecutará primero el JavaScript generado en el lado del servidor, antes de devolver el script como datos de texto.
Si se especifica como tipo 'json', los datos obtenidos se analizarán como un objeto JavaScript y se devolverá el objeto construido. Para lograr este objetivo, primero intenta usar JSON.parse(). Si el navegador no lo admite, se utiliza una función para construir.
Los datos JSON son una estructura de datos estructurada que se puede analizar fácilmente a través de JavaScript. Si los archivos de datos se almacenan en un servidor remoto (es decir, se obtienen datos de otro dominio, también conocido como acceso a datos de otro dominio), se debe utilizar el tipo 'jsonp'. Al usar este tipo, se crea un parámetro de cadena de consulta 'callback=?', que se agrega al final de la URL de la solicitud. El lado del servidor debe agregar el nombre de la función de devolución de llamada antes de los datos JSON para completar una solicitud JSONP válida. Si se desea especificar el nombre del parámetro de la función de devolución de llamada para reemplazar el predeterminado 'callback', se puede configurar el parámetro 'jsonp' de $.ajax().
Atención:JSONP es una extensión del formato JSON. Requiere algunos códigos en el lado del servidor para detectar y procesar los parámetros de la cadena de consulta.
Si se especifica el tipo 'script' o 'jsonp', cuando se recibe datos del servidor, se utiliza la etiqueta <script> en lugar del objeto XMLHttpRequest. En este caso, $.ajax() ya no devuelve un objeto XMLHttpRequest y ni siquiera pasa funciones de manejo de eventos, como 'beforeSend'.
Enviar datos al servidor
Por defecto, las solicitudes Ajax utilizan el método GET. Si se desea utilizar el método POST, se puede establecer el valor del parámetro 'type'. Esta opción también afecta a cómo se envía el contenido de la opción 'data' al servidor.
La opción 'data' puede contener una cadena de consulta, como key1=value1&key2=value2, o puede ser un mapeo, como {key1: 'value1', key2: 'value2'}. Si se utiliza la última forma, los datos se convertirán en una cadena de consulta en el transmisor. Este proceso también se puede evitar configurando la opción 'processData' en false. Si queremos enviar un objeto XML al servidor, este procesamiento puede no ser adecuado. Y en este caso, también deberíamos cambiar el valor de la opción 'contentType' a otro tipo MIME adecuado en lugar del predeterminado 'application/x-www-form-urlencoded'.
Opciones avanzadas
La opción global se utiliza para evitar que los funciones de retroalimentación de respuesta registradas, como .ajaxSend, o ajaxError, y métodos similares. Esto es útil en algunas situaciones, como cuando se envían solicitudes muy frecuentes y cortas, se puede deshabilitar esta en ajaxSend.
Si el servidor requiere autenticación HTTP, se puede usar el nombre de usuario y la contraseña a través de las opciones username y password para configurar.
Las solicitudes Ajax tienen un límite de tiempo, por lo que después de capturar y procesar las alertas de error, se puede utilizar para mejorar la experiencia del usuario. Generalmente se mantiene el valor predeterminado de este parámetro de tiempo de expiración, o se establece globalmente a través de jQuery.ajaxSetup, raramente se reestablece la opción timeout para solicitudes específicas.
Por defecto, siempre se enviará la solicitud, pero el navegador puede recuperar datos de su caché. Para prohibir el uso de los resultados de la caché, puede establecer el parámetro cache en false. Si desea que se reporte un error cuando los datos no hayan cambiado desde la última solicitud, puede establecer ifModified en true.
scriptCharset permite establecer un conjunto de caracteres específico para la solicitud de la etiqueta <script>, utilizado para scripts o datos similares a jsonp. Es particularmente útil cuando los scripts y el conjunto de caracteres de la página son diferentes.
La primera letra de Ajax es la inicial de asynchronous, lo que significa que todas las operaciones son paralelas y no tienen una secuencia de completamiento. El parámetro async de $.ajax() siempre se establece en true, lo que indica que otros códigos pueden ejecutarse mientras se inicia la solicitud. No se recomienda establecer esta opción en false, lo que significa que todas las solicitudes ya no son asincrónicas, lo que también puede llevar a que el navegador se bloquee.
$.ajax devuelve el objeto XMLHttpRequest que crea. Por lo general, jQuery maneja internamente y crea este objeto, pero el usuario también puede pasar un objeto xhr creado por sí mismo a través de la opción xhr. El objeto devuelto generalmente se desecha, pero aún se proporciona una interfaz de bajo nivel para observar y controlar la solicitud. Por ejemplo, llamar a .abort() en el objeto puede suspender la solicitud antes de que se complete.