我在jQuery中有两个要按特定顺序触发的函数。第一个功能是ajax功能,可更新部分视图。一旦ajax函数完成,则另一个应该在局部视图上进行样式设置-该函数需要一个参数。
ajaxFunction();
stylingFunction(params);
我尝试了以下方法:
ajaxFunction(function() {
stylingFunction(params)
});
此外,我尝试使用回调:
ajaxFunction(stylingfunction(params));
ajaxFunction(callback)
{
//Do update
callback()
}
但是这些都不起作用。由于部分视图正在更新,因此样式不久就会消失。我在哪里错了?
这两个函数都写在我的“父”视图中。
答案 0 :(得分:0)
由于您使用的是jQuery,因此可以const ajaxFunc = callback => $.ajax({...}).done( data => callback)
使用async / await。您可以在MDN上详细了解它。
答案 1 :(得分:0)
您可以使用链接到$ .ajax调用的.done()和.fail()...
我在successCallback()内用psuedo代码创建了几个回调函数,因为您说过您只需要“有时”运行样式函数。您将需要测试该函数内部的任何条件,以确定是否要运行样式函数。希望这可以帮助。
(function($) {
$(function() { //document.ready
$.ajax({ cache: false,
url: "/blah/vlah/lah",
data: { somedata: somedata }
})
.done(successCallback)
.fail(failCallback);
});
function successCallback(data) {
if (someCondition) {
stylingFunction(params);
}
};
function failCallback(jqXHR, status, error) {
console.log(jqXHR);
console.log(error);
console.log(status);
};
})(jQuery);
我创建了另一个处理ajax事件委托的要点,您可能需要查看并合并所有可能对您的情况有所帮助的内容。 https://gist.github.com/inceptzero/a753d020648f49da90f8
我还在github上为ajax请求队列创建了这个要点,它更加优雅和健壮。 https://gist.github.com/inceptzero/e64756f9162ca6aeeee5