【问题标题】:call WebService in javascript在javascript中调用WebService
【发布时间】:2011-05-05 17:32:28
【问题描述】:

我正在用 web 服务在 asp.net 中做一个项目。我的 web 服务和我的 asp.net 项目是分开的,我的 asp.net 项目有我的 web 服务的引用

我正在使用 Visual Studio 2008 框架 3.5,我的服务网站在 vb.net 中

我想在 JavaScript 中调用我的网络服务的网络方法

我的脚本管理器已声明

<asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="true" >
    <Services>
           <asp:ServiceReference path="http://localhost:2931/ServiceCompas.asmx"/>
    </Services>
</asp:ScriptManager>

JavaScript 函数

<script type="text/javascript">

function test() {
            alert('test');
            Service1.Liste_Carte(Onsucced);
        }

        function Onsucced(resultat) {
            alert('je suis passée');

        }

    </script>

service1 是我的 Webservice 的类

然后我用我的按钮调用函数测试

<input name="btnRecherche" class="btnRechercher" type="button" value="Rechercher un emplacement" onclick="test()" />

问题是:JavaScript 说 Service1 没有定义,但为什么呢?有什么问题?

【问题讨论】:

  • 我们不介意这里有一点法语,只要重要的部分是英语。
  • 非常小的一点:JavaScript 约定是将您打算用作构造函数的函数的名称大写,所以Onsucced 应该是onsucced(或者,好吧,onsuccess)。

标签: javascript asp.net web-services


【解决方案1】:

这可能是由于跨域安全限制(就浏览器而言,不同的端口导致不同的域)。

看起来您正在使用开发网络服务器。在本地调试时,您的单独项目将在不同的端口上运行,这将产生此问题。

为了测试,您可以尝试使用 IIS 并使用不同的顶级目录创建应用程序,这样它们就可以同时在端口 80 上运行。

【讨论】:

    【解决方案2】:
    <script src="WebService.asmx/js" type="text/javascript"></script>
    

    由于我正在尝试解决相同的问题,我可以根据以下内容看到这可能在某处丢失:http://weblogs.asp.net/dwahlin/archive/2006/12/28/understanding-asp-net-ajax-web-service-proxies.aspx(以上链接)

    话虽如此,找不到 service.asmx/js 文件...有什么具体的事情要做才能生成它吗?

    编辑,它适用于我,这是代码:

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <script src="WebService.asmx/js" type="text/javascript"></script>
        <script type="text/javascript">
            function callback(msg) {
                alert(msg);
            };
    
            function HelloWorld() {
                WebService.HelloWorld(callback);
            };
        </script>
        <title></title>
    </head>
    <body>
        <div id="test" onclick="HelloWorld();">
            click this
        </div>
    
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
          <Services>
            <asp:ServiceReference Path="~/WebService.asmx" />
          </Services>
        </asp:ScriptManager>
        </form>
    </body>
    </html>
    

    【讨论】:

      【解决方案3】:

      仔细检查您是否有权访问 Service1 的命名空间。您可能必须在调用中使用 ASP.NET 命名空间,这将使其类似于:

      ServiceCompasNamespace.Service1.Liste_Carte(Onsucced);
      

      有关示例,请参阅 http://weblogs.asp.net/dwahlin/archive/2006/12/28/understanding-asp-net-ajax-web-service-proxies.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 2012-03-26
        • 1970-01-01
        • 2019-07-06
        • 2020-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多