一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

2019-07-16 21:35ASP.NET之家 ASP.NET教程

近來總有一些朋友會問到一些入門的問題,把這些問題整理一下,寫出來。在以前的文章里,曾經利用純JS編寫過Ajax引擎,在真正開發的時候,大家都不喜歡以這種低效率的方式開發,利用MS Ajax的集成的引擎,可以簡單不少工作。

在MS Ajax中,JS與C#交互的一種方式就是調用WebService,該WebService可以ASMX的也可以是WCF的,不論哪種方式,系統都會自動為開發者生成代理的JS類。實現方法如下:

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

Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

2. IDE會自動為我們生成一個SVC文件,是對外的接口,以及該SVC對應的后臺實現類,該類文件會被放在App_Code下,如下圖所示:

Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

3.修改該類的代碼,如下所示:

代碼如下: 
[ServiceContract(Namespace = "TestAjax")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class Service 

[OperationContract] 
public bool ValidateUser(string uid, string pwd) 

if (uid=="sa"&&pwd=="sa") 

return true; 

return false; 

}

4.現在我們就可以頁面里調用了,首先在頁面中添加一個ScriptManager,并引入我們剛才編寫的那個WCF WebService(目的是在運行的時候生成JS的代理類),如下所示: 
代碼如下: 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 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"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Services> 
<asp:ServiceReference Path="~/Service.svc"/> 
</Services> 
</asp:ScriptManager> 
</div> 
</form> 
</body> 
</html>

5.接下來可以編寫JS代碼來直接調用C#寫的WebService了。JS代碼如下所示: 
代碼如下: 
<script type="text/javascript"> 
function ValidateUser(uid, pwd) { 
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed ,OnFailed ); 

function OnSucceed(result) { 
if (result == true) { 
window.alert("通過驗證"); 

else { 
window.alert("驗證失敗!"); 


function OnFailed(result) { 
window.alert("操作失敗:"+result ._message); 

</script>

6.這里請大家注意,在調用TestAjax.Service.ValidateUser方法時,代碼中并沒有直接取該函數的返回值,因為利用這種方案對服務器函數的調用都是異步的,正確的處理方法是指定了兩個回調函數OnSucceed和OnFailed,第一個函數是成功時的回調,后一個是失敗時的回調,這兩個函數都需要一個參數,OnSucceed的參數就是服務器函數的返回值,而OnFailed的參數是失敗時的出錯信息,功能有點像Exception類型,其中_message屬性中出錯信息,_stackTrace中出錯的堆棧跟蹤信息。 
7.千萬別說這種回調方法麻煩!其實這是一種常規的異步回調模式,大多數情況(不論什么語言)都會這么寫的! 
8.頁面上完整的代碼如下所示: 
代碼如下: 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 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"> 
<title></title> 
<script type="text/javascript"> 
function ValidateUser(uid, pwd) { 
TestAjax.Service.ValidateUser(uid,pwd,OnSucceed ,OnFailed ); 

function OnSucceed(result) { 
if (result == true) { 
window.alert("通過驗證"); 

else { 
window.alert("驗證失敗!"); 


function OnFailed(result) { 
window.alert("操作失敗:"+result ._message); 

function Button1_onclick() { 
var uid = $get("tbxUid").value; 
var pwd = $get("tbxPwd").value; 
ValidateUser(uid,pwd); 

</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Services> 
<asp:ServiceReference Path="~/Service.svc"/> 
</Services> 
</asp:ScriptManager> 
</div> 
用戶名:<input id="tbxUid" type="text" /><br /> 
密碼: <input id="tbxPwd" type="text" /> 
<input id="Button1" type="button" value="驗證" onclick="return Button1_onclick()" /> 
</form> 
</body> 
</html>

 

9.運行結果如下所示: 
當用戶名和密碼都是sa時會通過驗證 
當用戶名和官友有一個值不是sa時就不能通過驗證

Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

Javascript 直接調用服務器C#代碼 ASP.NET Ajax實例

10. 大家有什么問題給我發Email吧:[email protected]

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品免费久久久久久影院 | 亚洲大片免费看 | 亚洲 欧美 国产 在线 日韩 | 亚洲国产天堂久久综合网站 | 免费视频片在线观看 | 欧美理论片手机在线观看片免费 | 精品欧美一区二区三区四区 | 午夜第一页 | 99视频都是精品热在线播放 | 小向美奈子av | 扒开大腿狠狠挺进视频 | 欧美日韩在线观看区一二 | 第一福利在线导航 | 午夜伦伦电影理论片大片 | 国产精品不卡 | 国产精品久久99 | 美女的让男人桶爽免费看 | 91精品国产9l久久久久 | 无人视频在线观看完整版高清 | 性印度freehd| 变形金刚第一部 | 国产成人高清精品免费观看 | 欧美综合亚洲图片综合区 | 国产一区二区三区欧美 | 99草精品视频 | 午夜福利合集1000在线 | 欧美成人福利视频 | 99er热| 久久 这里只精品 免费 | 22sihu国产精品视频影视资讯 | 国产在线观看色 | 国产精品视频网 | 成人小视频在线观看 | 国产伦精品一区二区三区女 | 性色AV乱码一区二区三区视频 | 日本加勒比在线精品视频 | 高h短篇辣肉各种姿势bl | 日本免费不卡在线一区二区三区 | 91禁漫| 欧美xxxxx九色视频免费观看 | www.色啪啪.com|