【发布时间】:2014-09-30 14:01:33
【问题描述】:
我需要通过 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()
})
};
更新
抱歉,如果之前不清楚。这是远程调用的 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 解决方案
-
我只标记了 XPages,因为问题是使用 URL 调用 Ext Lib 组件 JSON-RPC。我认为这对非 XPage 开发人员来说意义不大。
-
这对 XPages 开发人员也没有任何意义。您在没有上下文的情况下显示了客户端 JS 的一小部分。使用静态响应模拟服务器端以使客户端正常工作。分开两块
-
很公平,我将使用 JSON-RPC XSP 代码更新问题。自从我问了这个问题,我发现了 pathInfo 属性,现在我只需要知道如何调用该方法。
-
pathInfo 不是我想的那样。我不认为我想做的事情是可能的,因此我认为这个问题无法回答。我的结论是 JSON-RPC 控件不打算从 URL 调用。我稍后会结束问题。
标签: jquery json xpages json-rpc