我希望有一个中心位置,可以监控Ajax请求并在某些情况下取消它们。
唯一不清楚的是如何从一个中心函数实际上取消Ajax请求。
我想解决方案可能看起来像这样:
jsf.ajax.addOnEvent(function(data) {
if (data.status === 'begin') {
// abort the ajax request
}
});
但我可能错了。
谢谢!
onclick
或onchange
处理程序,如果满足所需条件,则返回false
以中止ajax请求。<h:commandButton onclick="return mayFireAjax(this)">
<f:ajax />
</h:commandButton>
如果需要,您可以使用jQuery.on()
(或jQuery.delegate()
或jQuery.live()
(取决于所使用的jQuery版本)对一个共同选择器进行抽象处理,这样您就不需要在每个所需组件上重复它。
$(someSelector).on("click", function() {
return mayFireAjax(this);
});
var FxJSFBegin = "JSFBegin";
if (jsf) {
var originalRequest = jsf.ajax.request;
jsf.ajax.request = function(source, oevent, options) {
var event = $.Event(FxJSFBegin);
event.options = options;
event.originalEvent = oevent;
$(source).trigger(event);
if (event.isDefaultPrevented()) {
return;
} else {
originalRequest.apply(null, arguments);
}
};
}