Cómo llamar a los estados listos para Ajax en el método jQuery $.ajax
?
Respuesta
$.ajax()
devuelve el objeto XMLHttpRequest, por lo que si realmente desea acceder a él como los cambios de estado, se puede hacer esto:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
Pero las devoluciones de llamada incorporados deben ser todo lo que necesita para la mayoría usos, particularmente success
y complete
.
para hacer las cosas antes de los disparos de solicitud, utilice beforeSend
, o más apropiadamente para la mayoría de los casos, los .ajaxStart()
y .ajaxStop()
eventos ... por ejemplo, para mostrar un mensaje de carga cada vez que cualquier actividad Ajax está pasando.
Gracias, comprobaré esto. – tetris
Nota: Este código funciona solo hasta que jQuery 1.4.4 como con 1.5 el módulo ajax ha sido completamente reescrito. No conozco una solución en las versiones recientes (quiero probar el tiempo de latencia). – mgutt
¿No tendría esto una * Condición de carrera * - O - ¿jQuery usa una promesa? – Cody
Usted debe ser capaz de conseguir todo lo que necesita mediante el establecimiento de llamadas para las success
, error
, y complete
opciones en el objeto se pasa al método ajax()
. Echar un vistazo a la documentación:
http://api.jquery.com/jQuery.ajax/
Básicamente, funciona así:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
se puede ver la documentación de exactamente qué parámetros se tiene acceso a las funciones de devolución de llamada.
Lo que busco es el readyState, como cuando usas Js simples, usas este readyState para escribir algo como "cargando ..." justo antes de que se llene tu marcado, jQuery éxito, error o completo no parece trabajo para lo que quiero. ¿O solo tienes que fingir con jQuery? – tetris
@tada El método jQuery abstrae las formas antiguas de verificar los cambios de estado preparado. ¿Por qué no solo muestra el cuadro de diálogo de carga antes de hacer la llamada ajax y ocultarlo en las funciones de devolución de llamada? Esto es lo que hago y lógicamente tiene mucho más sentido que la manera simple de JS. – treeface
Bien, gracias .__ – tetris
método, probado con jQuery 2.0.2:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function() {
var output = xhr();
output.onreadystatechange = function() {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
Básicamente, lo que necesitaba era una devolución de llamada después se convierte en readyState
1
(conectado), que, en mi caso, era útil en la aplicación de sondeo largo "push "notificaciones con jQuery.
- 1. Cómo obtener Jquery Ajax Readystates
- 2. Jquery: publicación ajax y codificación
- 3. AJAX y jQuery con MVC
- 4. Ajax y Jquery en Symfony
- 5. jQuery + Ajax Hash/Historial y más
- 6. diferencia entre $ .getJSON() y $ .ajax() en jQuery
- 7. Enviar formulario usando AJAX y jQuery
- 8. Aprender jQuery y AJAX para Rails
- 9. jQuery Upload Progress y AJAX file upload
- 10. .net mvc y jquery $ .ajax en IE9
- 11. JQuery UI autocompletar con json y ajax
- 12. Diferente entre dwr y jquery ajax?
- 13. comportamiento extraño con AJAX/jQuery y Chrome
- 14. Página completa Diapositiva con jQuery y ajax
- 15. Autenticación CAS y redireccionamientos con jQuery AJAX
- 16. encabezado de respuesta jQuery y AJAX
- 17. jQuery Mobile con flot y navegación AJAX
- 18. jQuery Ajax Solicitud dentro de Ajax Solicitud
- 19. Jquery Ajax Thumbs gallery
- 20. Jquery $ .ajax statusCode Else
- 21. jQuery ajax this.id undefined
- 22. jQuery AJAX "Deshacer ayuda"
- 23. JQuery Adjuntar AJAX
- 24. jQuery Ajax checkbox state
- 25. jQuery AJAX vs. UpdatePanel
- 26. jQuery ajax image upload
- 27. Asegurando jquery ajax calls
- 28. jQuery: catch ajax excepciones
- 29. Jquery datos ajax codificación
- 30. jQuery AJAX Encabezado personalizado
¿Para qué? '$ .ajax' trae sus propias devoluciones de llamada' 'success' /' error'/'complete', deberían servir todas sus necesidades –
Hola, quiero readyState = 1 y readyState = 4 ¿cuáles son las equivalencias con jQuery? – tetris