gpt4 book ai didi

c# - 从 JavaScript 访问 ASMX Web 服务

转载 作者:行者123 更新时间:2023-11-30 15:12:10 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

要调用网络服务,您必须将其包含在 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。看this

HTH

关于c# - 从 JavaScript 访问 ASMX Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1594469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com