我的javascript方法定义如下:
updtCrtEdtPage = function() {PrimeFaces.ab({source:'j_id_ev',formId:'j_id_es',process:'typeNewLOB_in lobIdForEdit j_id_ev',update:'createLOBFullPagePanel',oncomplete:function(xhr,status,args){prepareForCrtEdtFullPage();},params:arguments[0]});}
每当此方法执行完时,我想执行某些方法( afterComplete())。 (此方法实际上启动ajax请求并将接收到的HTML数据附加到DOM上)。所以我希望只要收到ajax响应就会执行 afterComplete()方法。
我不能直接这样做:
updtCrtEdtPage();
afterComplete();
因为这会在ajax请求启动后立即调用afterComplete()&尚未完全执行。
我可以做任何JS / jQuery方法吗?
答案 0 :(得分:1)
您可以将afterComplete
作为参数传递,这样您的函数就可以在ajax调用完成后调用它。像这样......
updtCrtEdtPage = function(callback) {
PrimeFaces.ab({
source:'j_id_ev',
formId:'j_id_es',
process:'typeNewLOB_in lobIdForEdit j_id_ev',
update:'createLOBFullPagePanel',
oncomplete:function(xhr,status,args){
prepareForCrtEdtFullPage();
callback();
},
params:arguments[0]
});
}
updtCrtEdtPage(afterComplete);
既然你说你不能修改updtCrtEdtPage
,但你可以修改prepareForCrtEdtFullPage
我建议使用全局变量来确定当方法完成时要调用哪个回调函数... < / p>
updtCrtEdtPageCallback = afterComplete;
然后在prepareForCrtEdtFullPage
中添加最后一行......
updtCrtEdtPageCallback();
第一种方法比较整洁,但第二种方法足以满足您的特殊情况。
答案 1 :(得分:0)
你的updtCrtEdtPage = function()有一个oncomplete回调函数,当收到ajax响应时调用它,在该回调函数中添加你的afterComplete函数,它将在ajax请求完成后执行。
oncomplete:function(xhr,status,args){
prepareForCrtEdtFullPage();
afterComplete()
}