Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery通过URL调用JSON-RPC方法_Jquery_Json_Xpages_Json Rpc - Fatal编程技术网

使用jQuery通过URL调用JSON-RPC方法

使用jQuery通过URL调用JSON-RPC方法,jquery,json,xpages,json-rpc,Jquery,Json,Xpages,Json Rpc,我需要通过URL引用JSON-RPC方法,并想知道如何做,或者您是否可以做 我想这样做是因为我想使用jQuery.deferred()在$.post内部进行调用。看看这个例子,看看我想要完成什么。我想用我的RPC方法替换“/echo/html/”。如果有必要,我可以将我的RPC重写为XAgent,但我宁愿先看看是否有人知道如何通过URL调用它 我的RPC方法如下所示:openATMRPC.openATMFirst();使用传统的javascript它工作得很好,但正如您所看到的,我希望将它链接到

我需要通过URL引用JSON-RPC方法,并想知道如何做,或者您是否可以做

我想这样做是因为我想使用jQuery.deferred()在$.post内部进行调用。看看这个例子,看看我想要完成什么。我想用我的RPC方法替换“/echo/html/”。如果有必要,我可以将我的RPC重写为XAgent,但我宁愿先看看是否有人知道如何通过URL调用它

我的RPC方法如下所示:openATMRPC.openATMFirst();使用传统的javascript它工作得很好,但正如您所看到的,我希望将它链接到jQuery deferred函数中,以便始终运行

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”,我会收到一条“服务错误”消息,该消息是progress我的问题是如何通过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>

您要查找的最有可能的部分是JSON REST控件的确切地址。它们确实存在于XPage中(页面不需要做任何有用的事情)。请看一个示例服务:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
        <xe:jsonRpcService id="jsonRpcService1" serviceName="helloService">
        <xe:this.methods>
            <xe:remoteMethod name="sayHello">

                <xe:this.arguments>
                    <xe:remoteMethodArg name="who" type="string"></xe:remoteMethodArg>
                </xe:this.arguments>
                <xe:this.script><![CDATA[return "Hello " + who;]]></xe:this.script>
            </xe:remoteMethod>
        </xe:this.methods>
    </xe:jsonRpcService>
        <xp:label value="Who" id="label1" for="inputText1"></xp:label>
        <xp:inputText id="inputText1" value="#{viewScope.who}"></xp:inputText>
        <xp:button value="Greet Me" id="button1">
            <xp:eventHandler event="onclick" submit="false">
                <xp:this.script><![CDATA[var deferred = helloService.sayHello(dojo.byId("#{id:inputText1}").value);
deferred.addCallback(function(result) {
    alert(result)
});]]></xp:this.script>
            </xp:eventHandler></xp:button>
</xp:view>

当然,在引擎盖下使用Dojo。但当您查看服务URL(您可能正在查找的内容)时,您会发现如下内容:

/yournsf.nsf/sample.xsp?$$viewid=!dwjn9ryrqh&$$axtarget=view:_id1:jsonRpcService1

浏览器在名为$$viewid的隐藏字段中向下发送第一个值,第二个值是
{id:jsonRpcService1}


因此,您可以使用scriptblock向下发送该值并获取端点。REST服务在那里可能更容易,但这取决于您。

这不是XPages的问题。这是一个jquery问题。没有服务器端,就没有xpages解决方案,我只标记了xpages,因为问题是使用URL调用Ext Lib组件JSON-RPC。我不认为这对非XPage开发人员意味着什么,对XPages开发人员也不意味着什么。您显示了一部分没有上下文的客户端JS。使用静态响应模拟服务器端以使客户端工作。如果将这两部分分开,我将用JSON-RPC XSP代码更新这个问题。因为我问了这个问题,我发现了pathInfo属性,现在我只需要知道如何调用这个方法。pathInfo不是我想的那样。我不认为我正在尝试做的是可能的,因此我不认为这个问题可以回答。我的结论是,JSON-RPC控件不打算从URL调用。我稍后会结束这个问题。是的,这就是我要找的。对不起,我没说清楚我在问什么。非常感谢。我们终于明白了。所以没问题。这就是老师的作用;-)朝东的仪式鞠躬,朝你的方向前进,老师:)