pondělí 13. dubna 2015

Který ajax vyvolal ajaxComplete?

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 AnswersjQuery 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.

MAKE Magazine

Technology Review RSS Feeds

Nejčtenější příspěvky