Při použití
jQuery.ajax() zpravidla funkci, která zpracuje přečtená data, definujete jako metodu "cuccess" (všeobecně vřele doporučováno). Když se ale na stránce potkává scriptů více, nemusíte moci funkci "success" nadefinovat vždy tak, aby udělala vše, co je třeba. A přitom potřebujete
zareagovat na dokončení Ajaxu. Pak přijde ke slovu událost (event)
.ajaxComplete() (oproti
.ajaxSuccess() reaguje i na dokončení ajaxu s chybou). V případě jednoho ajaxu je hotovo. Ale když je ajaxů více, potřebujete identifikovat, který to vlastně právě skončil. To je optimální vyřešit kontrolou nastavení ajaxu. Buď můžete třeba kontrolovat použitou URL adresu, nebo si - jako já - nadefinovat zcela nový parametr. ...jenom na to přijít :-)
$.ajax({
type: 'POST',
url: actionURL,
data: {},
success: function(result) {
/* standardní obsluha */
},
myFlag: true
});
...
$(document).ajaxComplete(function(event, xhr, settings) {
if ( settings.myFlag ) {
myFunction();
}
});
Viz také
Can jquery code be triggered by ajax success? - Drupal Answers,
jQuery ajaxComplete: Is there a way to tell which Javascript function executed the ajax call? - Stack Overflow nebo
ajax - jquery::ajaxStop() versus jquery::ajaxComplete() - Stack Overflow.
Žádné komentáře:
Okomentovat