Мне нужно сослаться на метод JSON-RPC по URL-адресу и задаться вопросом, как это сделать или можете ли вы это сделать.
Я хочу сделать это таким образом, потому что я хочу сделать вызов внутри $.post, используя jQuery.deferred(). Посмотрите на этот пример, чтобы увидеть, чего я пытаюсь достичь. Я хочу заменить "/echo/html/" своим методом RPC. Если бы мне пришлось, я мог бы переписать свой 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», я получаю сообщение «Ошибка службы», которое является прогрессом. Как мне вызвать метод внутри RPC-JSON через URL-адрес?
<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>