Estoy trabajando en una aplicación web y necesito cargar algunos archivos $ .ajax. Encontré algo interesante en $ .when(). Then().¿Alguien puede explicar claramente cómo funcionan jQuery.when() y deferred.then()?
funciona muy bien cuando no tengo nada especial que ver con los datos devueltos por la solicitud como en este ejemplo:
$.when(
$.getScript('js/script1.js'),
$.getScript('js/script2.js')
).then(function(){
// Do whatever I want once both scripts are loaded...
});
Si funciona bien cuando tengo una sola petición ajax así:
$.when(
$.ajax('xml/myxml.xml')
).then(function(data){
// Here I can work with data like I would with a regular ajax request
alert($(data).find('mynode').text());
})
Pero si trato de la siguiente, no puedo conseguir que funcione:
$.when(
$.ajax('xml/myxml.xml'),
$.getScript('js/script.js')
).then(function(data){
// But here, I can't access $(data).find('mynode')...
})
leí el deferred object página pero la mayoría era demasiado técnica para mí y no puedo entender cómo se supone que puedo obtener mis datos ajax cuando estoy usando $ .when(). Then() para cargar scripts y datos de múltiples fuentes.
Así que si alguien puede ayudarme a descubrir cómo usar mis datos de ajax en mi caso de prueba anterior, ¡sería genial! Y si, mientras tanto, alguien puede explicar el objeto diferido de una manera más fácil de entender que la documentación oficial de jQuery, ¡sería increíble!
¡Gracias!
Intente inspeccionar los argumentos devueltos por 'diferido.then' en ese caso. 'console.log (arguments)' por favor publique los resultados. –
Mire el ejemplo en esta página: http://api.jquery.com/jQuery.when/ –
Su método 'then' debe aceptar dos argumentos:' .then (función (a1, a2) {'.... 'a1' será el resultado de la primera llamada ajax.' a2' será el resultado de la llamada getcript –