我有一個包含客戶端代碼和服務器端代碼的按鈕。客戶端代碼包含一個addCallback函數,用於根據第一個結果執行附加代碼。這一切工作正常,但現在我正試圖添加serverside JS運行AFTER客戶端完全完成。防止服務器端事件發生,直到客戶端完成
出於某種原因,在第一個RPC被調用並跳過客戶端代碼的其餘部分後,服務器代碼和刷新將運行。
注意:我的RPC返回一個字符串「true」或「false」。
message = "Starting Initiate Settlement Process...";
$(".infoMessage").text(message);
atmID = $("input.atmID").val(); //pull from hidden input
settlementCorrectYN = $("input:checked").val();
todayAmt = $(".todayAmt").val();
amtReceived = $(".amtRec").val();
var tranType = "Settlement";
var deferred = atmRPC.closeATMSettle(tranType);
deferred.addCallback(function(result){
alert("first result=" + result);
服務器更新這裏生生不息
if (result == "false") {
message = "Initiate Settlement process failed";
$(".infoMessage").text(message);
atmRPC.updateInfoMsg(message);
} else if (result == "true"){
var tranType = "Settlement";
var deferredInner = atmRPC.settleATMInitiate(settlementCorrectYN, tranType, todayAmt, amtReceived, atmID);
deferredInner.addCallback(function(result){
alert("inner result=" + result)
if (result == "false") {
message = "";
$(".infoMessage").text(message);
atmRPC.updateInfoMsg(message);
} else if(result == "true"){
message = atmID + " has been successfully Settled."
$(".infoMessage").text(message);
atmRPC.updateInfoMsg(message);
}
})
}
}
)
如果發生這種情況,服務器刷新部分或全部刷新。我如何強制SSJS和隨附的刷新在最後運行?
http://stackoverflow.com/questions/9769674/how-do-i-call-an-ssjs-method-with-parameters-from-javascript – 2015-04-02 08:50:28
史蒂夫嗨。是否有一個原因,您沒有在addCallback中運行額外的SSJS作爲輔助遠程服務調用?然後,您可以使用第二個Remote Service的callBack並執行partialRefreshGet/Post來代替標準部分刷新?這會給你帶來和運行SSJS一樣的效果。 – 2015-04-02 17:10:57
謝謝John!我確實使用了Marky的答案。這似乎也是一個好方法。 – 2015-04-02 18:11:32