我有一个关于ajaxSetup
的问题。脚本启动时,我定义以下内容:
$.ajaxSetup({
success: function(data) {
example();
}
});
到这里一切正常。问题始于使用Ajaxify,它覆盖了成功函数。
我该怎样防止这种情况?是否有可能执行这两个函数或将设置成功函数添加到我在主AJAX请求中调用的那个函数?
答案 0 :(得分:4)
使用ajaxsetup中定义的回调函数 定义
$.ajaxSetup({
beforeSend : function() {
$('#ajaxLoader').show();
...
}
});
稍后再打电话
$.ajax({
beforeSend: function() {
$.ajaxSettings.beforeSend();
// do other
...
}
});
答案 1 :(得分:3)
在jquery-1.4.2.js的源代码中添加“yourFunction()”:
function success() {
yourFunction();
// If a local callback was specified, fire it and pass it the data
if ( s.success ) {
s.success.call( callbackContext, data, status, xhr );
}
// Fire the global callback
if ( s.global ) {
trigger( "ajaxSuccess", [xhr, s] );
}
}
编辑:
在jquery-1.5.1.js的源代码中添加“yourFunction()”:
if (isSuccess) {
yourFunction();
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
答案 2 :(得分:1)
http://api.jquery.com/Ajax_Events/
您可以使用这种方式使用全局事件(如下所列),而不是使用ajaxSetup。这样,本地人就不会“覆盖”全局的那个。它们都将被执行。
在文档上触发全局事件,调用可能正在侦听的任何处理程序。您可以像这样监听这些事件:
// the global event for success is "ajaxSuccess"
$(document).bind("ajaxSuccess", function(){
// do your function
});
答案 3 :(得分:0)
由于$.ajaxSetup
旨在覆盖旧设置,因此预防它会涉及建议修改jQuery或Ajaxify插件代码。相反,你不能只使用Ajaxify自己的onSuccess
属性吗? (见:http://max.jsrhost.com/ajaxify-jquery-plugin/)
$('.trigger').ajaxify({
target: '#element',
onSuccess: function( options, data ) {
example();
}
});