我需要通過URL引用JSON-RPC方法,並且想知道如何執行或者如果可以。使用jQuery通過URL調用JSON-RPC方法
我想這樣做,因爲我想使用jQuery.deferred()在$ .post中進行調用。看看這個例子,看看我正在努力完成什麼。我想用我的RPC方法替換「/ echo/html /」。如果我不得不將我的RPC重寫爲XAgent,但我寧願先看看是否有人知道如何通過URL調用它。
我的RPC方法如下所示:openATMRPC.openATMFirst();它使用傳統的JavaScript工作得很好,但正如你所看到的,我希望它鏈接在jQuery延遲函數中,以便運行.always。
var deferred = function(trueFalse) {
// return value from response as `deferred.promise`
// within `setTimeout` , after `1000` ms (one second)
return new $.Deferred(function (dfd) {
setTimeout(function() {
$.post("/echo/html/", {
html: trueFalse
})
// `deferred.always` utilized here ,
// to catch either `success` or `fail` ,
// not certain about `error` (`fail`) callbacks ?
.always(function (data) {
dfd.resolve(data)
})
}, 1000);
// return `deferred.promise()` ,
// e.g., "true" , or "false"
return dfd.promise()
})
};
UPDATE
很抱歉,如果這是以前沒有清除。這是遠程調用的XSP代碼。 pathInfo屬性是答案的一部分,但我還沒有想出如何使用它來通過URL來引用方法,這正是我所尋求的。如果我參考「.../rpc」,則會得到一個正在進行的「服務錯誤」消息。 如何通過URL調用方法裏面的RPC-JSON是我的問題?
<xe:jsonRpcService id="jsonRpcService2" serviceName="openATMRPC" pathInfo="rpc">
<xe:this.methods>
<xe:remoteMethod name="openATMFirst">
<xe:this.script>
<![CDATA[print("into First");
var firstTry:boolean = atmBean.openATM(atmBean.atmID, userBean.userID, userBean.userPassword);
if(firstTry == false){
return firstTry.toString();
} else if(firstTry == true){
//atmBean.infoMessage = atmBean.atmID + " has been successfully Opened.";
return firstTry.toString();
}]]></xe:this.script></xe:remoteMethod>
這不是一個XPages問題。這是一個jQuery的問題。沒有服務器端,沒有xpages解決方案 – stwissel 2014-09-30 15:08:44
我只標記XPage,因爲問題是使用URL調用Ext Lib組件JSON-RPC。我認爲這對於非XPage開發者來說意義不大。 – 2014-09-30 15:18:07
它對XPages開發者也不意味着。你顯示一小部分沒有上下文的客戶端JS。使用靜態響應模擬服務器端以使客戶端工作。分開這兩個部分 – stwissel 2014-09-30 15:22:19