2012-02-22 7 views
1

サーバ(Cコード)とクライアント(Javascript)のXMLRPC接続を試みています。クライアントは2つの番号を送信し、サーバーはそれらを追加して戻します。 (Cコードで) サーバーは、次のXML形式でデータを取得することになっている:JavascriptのXMLRPCクライアント

<?xml version="1.0" encoding="UTF-8"?> 
<methodCall> 
<methodName>sample.add</methodName> 
<params> 
<param><value><i4>a</i4></value></param> // a and b are numbers to be added 
<param><value><i4>b</i4></value></param> // a and b are numbers to be added 
</params> 
</methodCall> 

私はJSのために模倣するライブラリを使用していました。クライアント側のスクリプトは次のとおりです。

<title>Mimic - JavaScript XML-RPC Client</title> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 

<script src="mimic/mimic.js"language="javascript"></script> 
.... 
<center> 
<input type="text" id="n1"/> 
<input type="text" id="n2"/>  
<input type="button" onclick="Add_Request();" value="Request"/> 
... 
<script language="javascript"> 
      function Add_Request() { 
      var method = "sample.add"; 
      var request = new XmlRpcRequest("demos/calc.php", method); 
      request.addParam(document.getElementById("n1")); 
      request.addParam(document.getElementById("n2")); 
      var response = request.send(); 
      alert(response.parseXML()); 
     } 
</script> 

クライアントは動作しません。 どこで間違いを犯したのですか... ...? JavascriptはどのフォームでXMLデータをサーバーに送信しますか? アドバイスをいただければ幸いです。

ありがとうございます!!!

P.S. CコードでのXMLRPCクライアントとサーバーの実装は正常に動作します。

+0

calc.phpが受信しているリクエストを貼り付けてもらえますか? – spicavigo

+0

こんにちは、あなたはこれでゾルを手に入れましたか? –

答えて

0

正しいURLをXmlRpcRequest関数に渡していません。模擬ソースフォージのアドレスを参照する必要があります。 、
...

<script language="javascript"> 
      function Add_Request() { 
      var method = "sample.add"; 
      var request = new XmlRpcRequest("http://mimic-xmlrpc.sourceforge.net/demos/calc.php", method); 
      request.addParam(document.getElementById("n1")); 
      request.addParam(document.getElementById("n2")); 
      var response = request.send(); 
      alert(response.parseXML()); 
     } 
</script> 

...
あなたがローカルホストからクロームでこれを実行している場合(これは、あなた自身のXML-RPC Serverを実行し、ちょうどこのコードを試していないと仮定しています)最終的にCORSの問題が発生します。 このスレッドに従ってください: Response to preflight request doesn't pass access control check