2016-08-31 1 views
3

J'essaie d'utiliser jsonRpcService pour imprimer une valeur sur la console. Juste pour tester. Mais quand je l'appelle la méthode que je reçois cette erreur sur la console du navigateur:Obtention d'une erreur lors de l'utilisation de jsonRpcService sur Xpages

POST http://localhost/Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! 400 (Bad Request) 
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…) 
Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400 
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…) 
Error: Unable to load /Teste.nsf/Teste.xsp/RpcService?$$viewid=!ei0pdt23xx! status:400(…) 

Voici l'image de l'erreur: http://i.stack.imgur.com/T5ekl.jpg

Je l'ai déjà cherché beaucoup pour une solution à cette erreur, mais je suis arrivé rien.

Voici le code que j'utilise:

<xe:jsonRpcService id="jsonRpcService1" serviceName="metodos" 
    pathInfo="RpcService"> 
<xe:this.methods> 
    <xe:remoteMethod name="teste" script="print('teste')"></xe:remoteMethod> 
</xe:this.methods> 
</xe:jsonRpcService> 

Et ceci est le code que j'utilise sur la console pour appeler la fonction

metodos.teste() 

Est-ce que quelqu'un sait ce que je Je fais mal?

Merci

+0

"metodos" est le nom du jsonRpcService. Le navigateur le reconnaît et si j'utilise "metodos.teste()" la fonction sera appelée, mais après cela le service retourne une erreur et à cause de cette erreur je ne peux pas gérer le retour de la fonction. –

Répondre

1

Vous devez retourner une valeur dans votre script et votre client doit attendre une réponse avec fonction de rappel.

Ceci est un exemple de travail:

<?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="metodos" 
     pathInfo="RpcService"> 
     <xe:this.methods> 
      <xe:remoteMethod 
       name="teste" 
       script="return 'teste'"> 
      </xe:remoteMethod>   
     </xe:this.methods> 
    </xe:jsonRpcService> 

    <xp:button 
     value="Test" 
     id="button1"> 
     <xp:eventHandler 
      event="onclick" 
      submit="false"> 
      <xp:this.script><![CDATA[ 
       var deferred = metodos.teste(); 
       deferred.addCallback(function(result) { 
        alert(result); 
       });]]></xp:this.script> 
     </xp:eventHandler> 
    </xp:button> 

</xp:view> 

Lorsque vous cliquez sur le bouton « Test » une boîte d'alerte apparaît avec le message « teste ».

Vous pouvez ajouter un code supplémentaire avant return 'teste' comme votre print('teste') d'origine. Le script doit juste retourner quelque chose ...

+0

Merci, c'était le problème. –

+0

Knut, Sur mon application locale ce code fonctionne, mais quand je le mets sur une autre application qui est sur un serveur, le code me renvoie la même erreur. Connaissez-vous une cause possible pour cela? –

+0

J'ai testé l'exemple ci-dessus sur un serveur donc ça devrait marcher ... –