Deseo que una página se cargue por completo antes de emitir una llamada ajax para actualizar la base de datos. Puedo invocar una función de JavaScript en el evento de carga del cuerpo para que la página esté completamente cargada, pero no estoy seguro de cómo activar la llamada Ajax desde allí. ¿Hay alguna forma mejor de lograr esto (la base de datos de actualización después de la carga de la página)?Javascript ajax call on page onload
Respuesta
Esto es realmente fácil usando una biblioteca de JavaScript, p. usando jQuery podría escribir:
$(document).ready(function(){
$.ajax({ url: "database/update.html",
context: document.body,
success: function(){
alert("done");
}});
});
Sin jQuery, la versión más simple podría ser la siguiente, pero no tiene en cuenta las diferencias de su navegador o la gestión de errores:
<html>
<body onload="updateDB();">
</body>
<script language="javascript">
function updateDB() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "database/update.html", true);
xhr.send(null);
/* ignore result */
}
</script>
</html>
Ver también:
ya está bien, pero ¿puedo hacer esto sin usar jQuery? –
'$ .ready' es el equivalente de' DOMContentLoaded' no 'load'. Su comparación jquery/vainilla puede ser engañosa en ese punto. Su versión estándar debe escuchar el evento utilizando el atributo 'document.addEventListener' y no' onload', que se considera una práctica realmente mala. – ngryman
FYI: Aviso de desaprobación: Las devoluciones de llamada jqXHR.success(), jqXHR.error() y jqXHR.complete() se eliminan a partir de jQuery 3.0. Puede usar jqXHR.done(), jqXHR.fail() y jqXHR.always() en su lugar. – mmv1219
Puede usar jQuery para hacer eso por usted.
$(document).ready(function() {
// put Ajax here.
});
Hay que ver aquí:
http://docs.jquery.com/Tutorials:Introducing_%24%28document%29.ready%28%29
O con el prototipo
Event.observe(this, 'load', function() { new Ajax.Request(...));
O mejor, definir la función en otro lugar en vez de en línea, entonces:
Event.observe(this, 'load', functionName);
No tiene que usar jQuery o Prototype específicamente, pero espero que esté utilizando algún tipo de biblioteca. Cualquiera de las bibliotecas manejará el manejo de eventos de una manera más consistente que onload y, por supuesto, hará que sea mucho más fácil procesar la llamada Ajax. Si debe usar el atributo de carga del cuerpo, entonces debería poder llamar a la misma función que se hace referencia en estos ejemplos (onload="javascript:functionName();"
).
Sin embargo, si la actualización de su base de datos no depende del renderizado en la página, ¿por qué esperar hasta que esté completamente cargada? Simplemente podría incluir una llamada a la función de llamadas Ajax al final del JavaScript en la página, que debería dar casi el mismo efecto.
- 1. onLoad del nuevo elemento, delegate/on?
- 2. return from jquery ajax call
- 3. cross-domain AJAX post call
- 4. fade in div on page load
- 5. Uploadify swf requesting URL on page load
- 6. JavaScript: ¿En qué se diferencia "function onload() {}" de "onload = function() {}"?
- 7. Defer análisis de JavaScript - Google Page Speed
- 8. javascript setTimeout call error
- 9. Wake up thread blocked on accept() call
- 10. JQuery Mobile Dynamic List de Ajax Call
- 11. ¿Cómo funciona 'call' en javascript?
- 12. iframe onload en IE7/8 con Javascript
- 13. javascript seleccionar texto en textarea onload
- 14. Mantener Group on One Page mediante Reporting Services
- 15. Ejecutar el método managebean desde javascript onload event
- 16. Auto start print html page using javascript
- 17. Accede al control ASP.NET desde static [WebMethod] (JS ajax call)
- 18. no wrap (head) vs onLoad
- 19. Refreshing list after ajax call with Knockout JS
- 20. contenido dinámico con ajax (ruby on rails)
- 21. Rails 3 - link_to to call partial using jquery ajax
- 22. JQuery ajax call valor de tiempo de espera predeterminado
- 23. No se puede recibir JSON desde JQuery ajax call
- 24. jquery ajax call return Error de análisis JSON
- 25. JQuery dominio cruzado auth call
- 26. Javascript on Rails
- 27. Ruby on Rails Carga de archivo AJAX
- 28. ¿Puede JavaScript cambiar el valor de @page CSS?
- 29. Page_Load vs OnLoad
- 30. HTML5 Audio onLoad
La actualización de la base de datos está estrictamente relacionada con el evento de la página de carga? o podría realizarse cuando su servidor comience a enviar la página? –