2009-12-23 147 views
1
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
      <Services> 
       <asp:ServiceReference Path="WebService.asmx" /> 
      </Services> 
    </asp:ScriptManager> 
    <script type="text/javascript"> 
      WebService.GetUpdate("hhh",OnComplete, OnTimeout, OnError); 
    </script> 

這段代碼工作正常,但是當我改變路徑到外部的webservices時,它給了我一個錯誤,類名沒有定義。有人可以幫助我,謝謝 的改變之一是AJAX可以調用外部webservices函數

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
      <Services> 
       <asp:ServiceReference Path="http://mysite/WebService.asmx" /> 
      </Services> 
    </asp:ScriptManager> 
    <script type="text/javascript"> 
      WebService.GetUpdate("hhh",OnComplete, OnTimeout, OnError); 
    </script> 

回答

0

撥打本地服務器,讓服務器撥打外部網絡服務。這是允許的。

+0

謝謝,我的問題解決了你的告訴 – Dirk 2009-12-23 20:31:06

-1

您只能在同一個域中使用的ServiceReference

+0

@zincorp, 做ü知道如何使呼叫在不同的領域 – Dirk 2009-12-23 17:19:57

0

您正在嘗試做一個跨域調用引用Web服務:可以不要將XMLHttpRequest從一個域調用到另一個域。

+0

對於Scobal,你知道如何使用javascript進行跨域調用,謝謝 – Dirk 2009-12-23 17:19:14

+0

正如Brian所說的,你需要在同一個域上使用代理。看看這篇文章:http://developer.yahoo.com/javascript/howto-proxy.html – 2009-12-24 10:23:18

2

與其使用Javascript進行跨域調用,如果您可以更改Web服務實現,則可以在Web服務中進行跨域調用,然後從客戶端檢索結果。

使用Javascript,據我所知,一些Javascript庫(如dojo)支持這一點。下面是一個示例代碼片段。

var callee = dojox.io.windowName.send("GET", {url:"http://xyz.com/data"}); 
callee.addCallback(function(data){ 
    console.log(data); 
}); 
+0

周杰倫有正確的想法,只是不發送完整的網址,因爲這會打開你直到攻擊。只需發送一個枚舉值(1爲xyz url,2爲abc url等) – 2009-12-23 18:34:12

+0

@allen - 嗯......嗯?你有一個majic DNS服務器,將'1'翻譯成'xyz.com'嗎? ;-) – 2010-10-11 12:55:54

+0

枚舉將存儲在服務器上,服務器將知道將1轉換爲'xyz.com',依此類推。然後它會在服務器端進行調用,並將數據返回。它基本上是一個代理。 – 2011-05-17 13:44:20

0

使用本地Web服務調用外部Web服務,然後使用JavaScript來調用本地函數,那麼問題就解決了