繁体   English   中英

在javascript中调用WebService

[英]call WebService in javascript

我正在使用Web服务在asp.net中进行项目。 我的Web服务和我的asp.net项目是分开的,我的asp.net项目有我的Web服务的参考

我正在使用Visual Studio 2008 Framework 3.5,并且我的服务网站位于vb.net中

我想用JavaScript调用我的Web服务的Web方法

我的脚本管理器被声明

<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,但是为什么呢? 有什么问题?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM