2012-02-22 68 views
1

我試圖在服務器(C代碼)和客戶端(使用Javascript)之間建立XMLRPC連接。客戶端發送兩個號碼,服務器添加它們並返回。 (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 2012-02-22 08:23:44

+0

嗨,你有沒有解決這個問題? – 2012-08-02 06:55:50

回答

0

您沒有將正確的URL傳遞給XmlRpcRequest函數。您需要引用模擬源代碼地址。 (這是假設你沒有運行自己的XML-RPC服務器,只是嘗試這種代碼)
...

<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> 

...
如果您使用的是Chrome從本地主機上運行此,你最終會得到一個CORS問題。 請按照以下線索尋求幫助: Response to preflight request doesn't pass access control check