2009-12-23 102 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来调用本地函数,那么问题就解决了