有没有办法在某些代码之前执行alfresco ajax请求successCallback。 我不能把代码放在successCallback中,这是它的样子。
do{var serviceUrl = "/share/proxy/alfresco/slingshot/search?" + newSRequest;
Alfresco.util.Ajax.request({
url: serviceUrl,
successCallback:{
fn: function(response){
var items = response.json.items;
for (var i = 0 ; i < items.length ; i++){
var nodeRef = items[i].nodeRef;
if (_this.nodeRefParameter.length > 0){
_this.nodeRefParameter += ",";
}
_this.nodeRefParameter += nodeRef;
}
},
scope: this
},
failureMessage: "Erreur Technique - Impossible d'executer le service: '" + serviceUrl + "'",
execScripts: true
});
i++;
} while( i * NB_RESULTS_PER_PAGE < (this.totalRecords < MAX_RESULTS_EXPORTED ? this.totalRecords : MAX_RESULTS_EXPORTED) );
var inputHiddenNodeRefs = document.getElementById("nodeRefs");
inputHiddenNodeRefs.setAttribute("value", _this.nodeRefParameter);
var formulaire = document.getElementById("formExportSearchResults");
formulaire.submit();
答案 0 :(得分:0)
在do-while循环中触发XHR调用的方法通常是一种非常“脏”的方法。因此,根据您的使用情况,有更好的设计方法,例如连接自己的WebScript,只调用一次。 请记住,XHR响应是异步处理的,因此您无法确定您的回调是否与触发XHR调用的方式相同。
如果涉及JavaScript&amp;链接然后承诺/期货是要走的路。不幸的是,Alfresco使用了一个非常古老的YUI版本,承诺不是内置的,但你可以自己添加一个promises-lib,例如:https://github.com/kriskowal/q
也许,您应该更详细地描述您的用例/需求,尤其是关于您要查找的nodeRef的角色。最好添加一个Alfresco FormFilter并在提交表单时在repo中执行...