国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Javascript 直接調(diào)用服務(wù)器C#代碼 ASP.NET Ajax實(shí)例

2020-01-18 00:55:10
字體:
供稿:網(wǎng)友

在MS Ajax中,JS與C#交互的一種方式就是調(diào)用WebService,該WebService可以ASMX的也可以是WCF的,不論哪種方式,系統(tǒng)都會(huì)自動(dòng)為開發(fā)者生成代理的JS類。實(shí)現(xiàn)方法如下:

1.        建立一個(gè)網(wǎng)站,并在其中添加一個(gè)WCF服務(wù)(這里一定要選擇Ajax-Enabled WCF Service),如下圖所示:

2.        IDE會(huì)自動(dòng)為我們生成一個(gè)SVC文件,是對(duì)外的接口,以及該SVC對(duì)應(yīng)的后臺(tái)實(shí)現(xiàn)類,該類文件會(huì)被放在App_Code下,如下圖所示:

height=99

3.修改該類的代碼,如下所示:%20
復(fù)制代碼%20代碼如下:

%20
[ServiceContract(Namespace%20=%20"TestAjax")]%20
[AspNetCompatibilityRequirements(RequirementsMode%20=%20AspNetCompatibilityRequirementsMode.Allowed)]%20
public%20class%20Service%20
{%20
[OperationContract]%20
public%20bool%20ValidateUser(string%20uid,%20string%20pwd)%20
{%20
if%20(uid=="sa"&&pwd=="sa")%20
{%20
return%20true;%20
}%20
return%20false;%20
}%20
}%20
%20
4.現(xiàn)在我們就可以頁面里調(diào)用了,首先在頁面中添加一個(gè)ScriptManager,并引入我們剛才編寫的那個(gè)WCF%20WebService(目的是在運(yùn)行的時(shí)候生成JS的代理類),如下所示:%20
復(fù)制代碼%20代碼如下:
%20
<%@%20Page%20Language="C#"%20AutoEventWireup="true"%20CodeFile="Default.aspx.cs"%20Inherits="_Default"%20%>%20
<!DOCTYPE%20html%20PUBLIC%20"-//W3C//DTD%20XHTML%201.0%20Transitional//EN"%20"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">%20
<html%20xmlns="http://www.w3.org/1999/xhtml">%20
<head%20runat="server">%20
<title></title>%20
</head>%20
<body>%20
<form%20id="form1"%20runat="server">%20
<div>%20
<asp:ScriptManager%20ID="ScriptManager1"%20runat="server">%20
<Services>%20
<asp:ServiceReference%20Path="~/Service.svc"/>%20
</Services>%20
</asp:ScriptManager>%20
</div>%20
</form>%20
</body>%20
</html>%20
%20
5.接下來可以編寫JS代碼來直接調(diào)用C#寫的WebService了。JS代碼如下所示:%20
復(fù)制代碼%20代碼如下:%20
<script%20type="text/javascript">%20
function%20ValidateUser(uid,%20pwd)%20{%20
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed%20,OnFailed%20);%20
}%20
function%20OnSucceed(result)%20{%20
if%20(result%20==%20true)%20{%20
window.alert("通過驗(yàn)證");%20
}%20
else%20{%20
window.alert("驗(yàn)證失敗!");%20
}%20
}%20
function%20OnFailed(result)%20{%20
window.alert("操作失敗:"+result%20._message);%20
}%20
</script>%20
%20
6.這里請(qǐng)大家注意,在調(diào)用TestAjax.Service.ValidateUser方法時(shí),代碼中并沒有直接取該函數(shù)的返回值,因?yàn)槔眠@種方案對(duì)服務(wù)器函數(shù)的調(diào)用都是異步的,正確的處理方法是指定了兩個(gè)回調(diào)函數(shù)OnSucceed和OnFailed,第一個(gè)函數(shù)是成功時(shí)的回調(diào),后一個(gè)是失敗時(shí)的回調(diào),這兩個(gè)函數(shù)都需要一個(gè)參數(shù),OnSucceed的參數(shù)就是服務(wù)器函數(shù)的返回值,而OnFailed的參數(shù)是失敗時(shí)的出錯(cuò)信息,功能有點(diǎn)像Exception類型,其中_message屬性中出錯(cuò)信息,_stackTrace中出錯(cuò)的堆棧跟蹤信息。%20
7.千萬別說這種回調(diào)方法麻煩!其實(shí)這是一種常規(guī)的異步回調(diào)模式,大多數(shù)情況(不論什么語言)都會(huì)這么寫的!%20
8.頁面上完整的代碼如下所示:%20
復(fù)制代碼%20代碼如下:%20
<%@%20Page%20Language="C#"%20AutoEventWireup="true"%20CodeFile="Default.aspx.cs"%20Inherits="_Default"%20%>%20
<!DOCTYPE%20html%20PUBLIC%20"-//W3C//DTD%20XHTML%201.0%20Transitional//EN"%20"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">%20
<html%20xmlns="http://www.w3.org/1999/xhtml">%20
<head%20runat="server">%20
<title></title>%20
<script%20type="text/javascript">%20
function%20ValidateUser(uid,%20pwd)%20{%20
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed%20,OnFailed%20);%20
}%20
function%20OnSucceed(result)%20{%20
if%20(result%20==%20true)%20{%20
window.alert("通過驗(yàn)證");%20
}%20
else%20{%20
window.alert("驗(yàn)證失敗!");%20
}%20
}%20
function%20OnFailed(result)%20{%20
window.alert("操作失敗:"+result%20._message);%20
}%20
function%20Button1_onclick()%20{%20
var%20uid%20=%20$get("tbxUid").value;%20
var%20pwd%20=%20$get("tbxPwd").value;%20
ValidateUser(uid,pwd);%20
}%20
</script>%20
</head>%20
<body>%20
<form%20id="form1"%20runat="server">%20
<div>%20
<asp:ScriptManager%20ID="ScriptManager1"%20runat="server">%20
<Services>%20
<asp:ServiceReference%20Path="~/Service.svc"/>%20
</Services>%20
</asp:ScriptManager>%20
</div>%20
用戶名:<input%20id="tbxUid"%20type="text"%20/><br%20/>%20
密碼:%20<input%20id="tbxPwd"%20type="text"%20/>%20
<input%20id="Button1"%20type="button"%20value="驗(yàn)證"%20onclick="return%20Button1_onclick()"%20/>%20
</form>%20
</body>%20
</html>%20
%20
9.運(yùn)行結(jié)果如下所示:%20
當(dāng)用戶名和密碼都是sa時(shí)會(huì)通過驗(yàn)證%20
當(dāng)用戶名和官友有一個(gè)值不是sa時(shí)就不能通過驗(yàn)證 


10. 大家有什么問題給我發(fā)Email吧:warensoft@foxmail.com

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青岛市| 沙坪坝区| 盐边县| 祁连县| 南昌市| 安康市| 汝南县| 柞水县| 禄丰县| 神农架林区| 湟源县| 黎平县| 株洲县| 盐山县| 桦甸市| 宁城县| 衡阳县| 开封县| 佳木斯市| 平武县| 沭阳县| 尼勒克县| 浮山县| 贵港市| 保定市| 固始县| 洱源县| 金阳县| 东丽区| 郯城县| 和龙市| 米泉市| 汽车| 隆子县| 永善县| 博白县| 华坪县| 安岳县| 西乡县| 彰化市| 阳江市|