从 JavaScript 访问 ASMX Web 服务

发布于 2024-08-08 03:19:57 字数 3346 浏览 1 评论 0 原文

我制作了一个名为WebService的Web服务,其中GetTest、SetTest函数用于设置和获取GUID。现在我想在 .aspx 文件中的 javascript 中使用这个函数。 我如何在 javascript 中使用这个函数。我将 Web 服务代码放在下面:-

[WebMethod]
public void SetTest(Guid id, string text)
{
    this.Application.Add(id.ToString(), text);
}
[WebMethod]
public string GetTest(Guid id)
{
    return this.Application[id.ToString()].ToString();
}

[WebMethod]
public Guid CreateNew()
{
    return Guid.NewGuid();
}
[WebMethod]
public string HelloWorld() {
    return "Hello World";
}

和 .ASPX 代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UsingWebService.aspx.cs" Inherits="UsingWebService" %>

<!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">
    <title>Using Web Service</title>    
    <script type="text/javascript" language="javascript">
    debugger;
        var txtGetTestID = '<%= this.txtGetTest.ClientID %>';
        var txtSetTestID = '<%= this.txtSetTest.ClientID %>';
        var _guid = null;

        function GetNew()
        {
           //WebService.CreateNew(GetNewDone,OnError,null);
           GetNewDone(WebService.CreateNew());
        }
        function GetNewDone(result)
        {
            _guid = result;
        }

        function SetTest()
        {
            WebService.SetTest(_guid,$get(txtSetTestID).value);
        }

        function GetTest()
        {
            //WebService.GetTest(_guid,GetTestDone,OnError ,null);
            GetTestDone(WebService.GetTest(_guid));
        }

        function GetTestDone(result)
        {
            $get(txtGetTestID).value = result;

        }
        function OnError(ex)
        {
            alert('Error: '+ex._message);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblInput" Text="Input String" runat="server"></asp:Label>
        &nbsp;
        <asp:TextBox ID="txtInput" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <br />
        <br />
        <asp:Button ID="btnInvoke" Text="Invoke" runat="server" 
            onclick="btnInvoke_Click" />
    </div>
    <table>
    <tr>
        <td>
            &nbsp;
        </td>
        <td>
            <asp:Button id="btnNew" runat="server" Text="New" OnClientClick="GetNew(); return false;" />
        </td>
    </tr>
     <tr>
        <td>
            <asp:TextBox ID="txtSetTest" runat="server" />
        </td>
        <td>
            <asp:Button ID="btnSetTest" runat="server" Text="Set" OnClientClick="SetTest(); return false;" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:TextBox ID="txtGetTest" runat="server" />
        </td>
        <td>
            <asp:Button ID="btnGet" runat="server" Text="Get" OnClientClick="GetTest(); return false;" />
        </td>
    </tr>
</table>
</form>
</body>
</html>

I made one web service of named WebService in which GetTest, SetTest function which set and get GUID. Now i want to use this function in javascript in .aspx file.
How i use this function in javascript. I put web service code below:-

[WebMethod]
public void SetTest(Guid id, string text)
{
    this.Application.Add(id.ToString(), text);
}
[WebMethod]
public string GetTest(Guid id)
{
    return this.Application[id.ToString()].ToString();
}

[WebMethod]
public Guid CreateNew()
{
    return Guid.NewGuid();
}
[WebMethod]
public string HelloWorld() {
    return "Hello World";
}

AND .ASPX CODE:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UsingWebService.aspx.cs" Inherits="UsingWebService" %>

<!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">
    <title>Using Web Service</title>    
    <script type="text/javascript" language="javascript">
    debugger;
        var txtGetTestID = '<%= this.txtGetTest.ClientID %>';
        var txtSetTestID = '<%= this.txtSetTest.ClientID %>';
        var _guid = null;

        function GetNew()
        {
           //WebService.CreateNew(GetNewDone,OnError,null);
           GetNewDone(WebService.CreateNew());
        }
        function GetNewDone(result)
        {
            _guid = result;
        }

        function SetTest()
        {
            WebService.SetTest(_guid,$get(txtSetTestID).value);
        }

        function GetTest()
        {
            //WebService.GetTest(_guid,GetTestDone,OnError ,null);
            GetTestDone(WebService.GetTest(_guid));
        }

        function GetTestDone(result)
        {
            $get(txtGetTestID).value = result;

        }
        function OnError(ex)
        {
            alert('Error: '+ex._message);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblInput" Text="Input String" runat="server"></asp:Label>
         
        <asp:TextBox ID="txtInput" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="lblResult" runat="server"></asp:Label>
        <br />
        <br />
        <asp:Button ID="btnInvoke" Text="Invoke" runat="server" 
            onclick="btnInvoke_Click" />
    </div>
    <table>
    <tr>
        <td>
             
        </td>
        <td>
            <asp:Button id="btnNew" runat="server" Text="New" OnClientClick="GetNew(); return false;" />
        </td>
    </tr>
     <tr>
        <td>
            <asp:TextBox ID="txtSetTest" runat="server" />
        </td>
        <td>
            <asp:Button ID="btnSetTest" runat="server" Text="Set" OnClientClick="SetTest(); return false;" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:TextBox ID="txtGetTest" runat="server" />
        </td>
        <td>
            <asp:Button ID="btnGet" runat="server" Text="Get" OnClientClick="GetTest(); return false;" />
        </td>
    </tr>
</table>
</form>
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

此生挚爱伱 2024-08-15 03:19:57

为了能够从 javascript 调用 WebService,您必须首先添加 [ScriptMethod] 注释,例如

[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService
{
}

要调用 Web 服务,您必须将其包含到 ScriptManager 中。

   <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Path="~/Script/jquery-1.3.2.js" />
            <asp:ScriptReference Path="~/Script/jquery-ui-1.7.2.custom.min.js" />
            <asp:ScriptReference Path="~/Script/json.jquery.js" />
        </Scripts>
        <Services>
            <asp:ServiceReference Path="~/WebService.asmx" />
        </Services>
    </asp:ScriptManager>

现在你需要像下面这样调用webservice

[WebServiceNameSpace].MyWebService.MyWebMethod(
parameters,
function (e)//Function for success
{
},
function (e)//Function for failure
{
});

var id=1;
var text="bla bla";
NameSpace.WebService.SetTest(id, text,
function (e){
},
function (e){
});

你也可以使用jQuery来调用webservice。看看这个

HTH

To able to call WebService from javascript you must first add the [ScriptMethod] Annotation like

[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService
{
}

To Call the webservice you must include it into an ScriptManager.

   <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Path="~/Script/jquery-1.3.2.js" />
            <asp:ScriptReference Path="~/Script/jquery-ui-1.7.2.custom.min.js" />
            <asp:ScriptReference Path="~/Script/json.jquery.js" />
        </Scripts>
        <Services>
            <asp:ServiceReference Path="~/WebService.asmx" />
        </Services>
    </asp:ScriptManager>

Now You need to call webservice as follows

[WebServiceNameSpace].MyWebService.MyWebMethod(
parameters,
function (e)//Function for success
{
},
function (e)//Function for failure
{
});

for you it will be like:

var id=1;
var text="bla bla";
NameSpace.WebService.SetTest(id, text,
function (e){
},
function (e){
});

you can also use jQuery to call webservice. Look at this

HTH

相守太难 2024-08-15 03:19:57

首先,您需要将 [ScriptMethod] 属性添加到您的 Web 服务方法中。然后使用 ASPX 页面上的 ScriptManager 控件注册您的 Web 服务:

<asp:ScriptManager ID="SM1" runat="server">
  <Services>
    <asp:ServiceReference Path="Service.asmx" />
  </Services>
</asp:ScriptManager>

然后您可以从 Javascript 调用 GetTest() SetTest() 等。

希望有帮助!

First you need to add [ScriptMethod] attributes to your Web Service methods. Then using the ScriptManager control on your ASPX page, register your web service:

<asp:ScriptManager ID="SM1" runat="server">
  <Services>
    <asp:ServiceReference Path="Service.asmx" />
  </Services>
</asp:ScriptManager>

You can then call GetTest() SetTest() etc from your Javascript.

Hope that helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文