2016-01-08 6 views
3
(function($){ 
    $(document).ready(function(){ 
     $(document).ajaxComplete(function() { 
     console.log("finished") 
     }); 
    }); 
})(jQuery); 

Это не срабатывает после вызова прототипа на странице.делает jQuery ajaxComplete() обнаруживает prototypejs ajax calls?

Но этот прототип код работает:

Ajax.Responders.register({ 
    onCreate: function() { 
    console.log("start") 
    }, 
    onComplete: function() { 
    console.log("finished") 
    } 
}); 

были проблемы с ajaxcomplete ранее, когда несколько библиотек JQuery были загружены на странице, но это не происходит сейчас.

Выполняет ли jQuery ajaxComplete() обнаружение прототипов ajax-вызовов?

Спасибо!

+0

Позаботьтесь, что, так как Magento исторически строить на prototypeJS, $ на самом деле prototypeJS Пб, когда есть '$ j = jQuery.noConflict();' уже на Magento, что может упростить ваш фактический код. Итак, '$ ('some')' -> объект prototypeJS, '$ j ('some')' -> объект jQuery –

ответ

3

Короткий ответ: нет

Длинный ответ: потому что JQuery и PrototypeJS абстрактные базовые функциональные возможности XHR по-разному, они отслеживают количество активных запросов XHR по-своему, и огонь их собственные функции обратного вызова.

Например, в PrototypeJS activeRequestCount увеличивается или уменьшается при запуске Аякса запросов или полной соответственно

Ajax.Responders.register({ 
    onCreate: function() { Ajax.activeRequestCount++ }, 
    onComplete: function() { Ajax.activeRequestCount-- } 
});