在javascript中调用WebService

时间:2010-11-05 17:14:45

标签: javascript asp.net web-services

我正在使用网络服务在asp.net上做一个项目。我的Web服务和我的asp.net项目是分开的,我的asp.net项目引用了我的Web服务

我正在使用visual studio 2008 framework 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没有定义,但为什么?有什么问题?

3 个答案:

答案 0 :(得分:0)

仔细检查您是否有权访问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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

相关问题