我使用JQuery Ajax函数:
$.ajax({
url: ...,
success: function (){
...
},
...
});
我需要在每次调用success
函数之前执行一些代码(但是在收到响应之后)。
我想这个success
函数就像一个事件一样被触发,所以有没有办法代替success
一个进行其他函数调用?
答案 0 :(得分:1)
您可以使用Global Ajax Event Handlers方法执行此操作。
听起来您可能想要使用AjaxComplete:
$(document).ajaxComplete(function(){
// do something here when ajax calls complete
});
警告 - 对于页面上的每个jQuery ajax调用都会发生这种情况......
答案 1 :(得分:0)
您也可以在完成开始时调用其他功能:
$.ajax({
url: ...,
done: function (){
someOtherFunction();
},
...
});
这应该可以实现你在问题中描述的内容。
答案 2 :(得分:0)
之前发送你想要的东西:
$.ajax({
url: "...",
beforeSend: function (x) {
//do something before the the post/get
}
}).done(function (data) {
//done code
});
答案 3 :(得分:0)
我成功地在成功之前调用了另一个函数,将$.ajax()
替换为自定义函数,如:
function mYajax(options) {
var temporaryVariable = options.success;
options.success = function () {
console.log('Custom')
if (typeof temporaryVariable === 'function')
temporaryVariable()
};
return $.ajax(options);
}
$('button').click(function () {
mYajax({
url: "/echo/json/",
data: {
foo: "bar"
},
success: function (data, textStatus, jqXHR) {
console.log('succeed action');
},
});
});