Javascript 直接调用服务器C#代码 ASP.NET Ajax实例_实用技巧

在MS Ajax中,JS与C#交互的一种方式就是调用WebService,该WebService可以ASMX的也可以是WCF的,不论哪种方式,系统都会自动为开发者生成代理的JS类。实现方法如下:

1.        建立一个网站,并在其中添加一个WCF服务(这里一定要选择Ajax-Enabled WCF Service),如下图所示:

2.        IDE会自动为我们生成一个SVC文件,是对外的接口,以及该SVC对应的后台实现类,该类文件会被放在App_Code下,如下图所示:

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时就不能通过验证 


10. 大家有什么问题给我发Email吧:warensoft@foxmail.com

时间: 2024-08-31 13:56:58

Javascript 直接调用服务器C#代码 ASP.NET Ajax实例_实用技巧的相关文章

云服务器下搭建ASP.NET Core环境_实用技巧

最近.net core如火如荼,国内这方面环境搭建方面的文档也非常多,但是不少已经是过时的,就算按照那个流程走下去也避免不了一些地方早就不一样了.所以下面我将从头到尾的教大家搭建一次环境,并且成功运行官网的demo. 一.系统环境 本次笔者因为懒的去做虚拟机,所以注册了一个云提供商的试用账户作为本次的主机. 系统: Ubuntu Server 14.04.2 LTS 64bit Mono: 1.0.0-rc1-update1 Coreclr: 1.0.0-rc1-update1 二.正文 1.首

ASP.NET中实现jQuery Validation-Engine的Ajax验证_实用技巧

见下图: 验证的例子:http://www.position-relative.net/creation/formValidator/ 官方地址: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ 这个插件支持大部分的浏览器,但由于有使用到了css3的阴影和圆角样式,所以在IE浏览器下无法看到圆角和阴影效果(IE 9 支持圆角效果). 本文主要内容是

asp.net+ajax的Post请求实例_实用技巧

本文实例讲述了asp.net+ajax的Post请求的实现方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: //一个ajax的Post请求       function submitInfo() {          $(".warn").hide(); //刚提交的时候隐藏错误的信息          var data = $("#formData").serialize(); //将表单的数据通过序列化表单值,创建 URL 编码文本字符串.形成一个表

asp.net TreeView递归循环子节点生成树形菜单实例_实用技巧

本文实例讲述了asp.net TreeView递归循环子节点生成树形菜单的方法.分享给大家供大家参考,具体如下: 这里主要用到递归循环获取子结点 /// <summary> /// 生成根节点 /// </summary> /// <param name="treeview"></param> protected void BindTreeView(long ID, TreeView treeview) { DataTable dt =

asp.net页面SqlCacheDependency缓存实例_实用技巧

缓存技术是asp.net程序设计中非常实用的技术,也是大型web程序设计中比较常见的技术.本文就以实例形式对此加以说明.具体如下: asp.net页面的SqlCacheDependency Sql缓存: Cahce/SqlCachePage.aspx页面代码如下: <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile=&qu

ASP.NET中用js取CheckBoxList中值的方法实例_实用技巧

做的一些项目都比较小,而且时间紧,有好多东西都没来得急总结,趁这会还有点时间把前面项目中的用到的知识点分享下,只为以后方便使用.前台页面代码 复制代码 代码如下: <!--关键字-->    <div id="keyWordsDiv" style="border: 2px solid #6FA1D9; display: none; position: absolute;        top: 0px; left: 0px; width: 260px; he

asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码实例_实用技巧

本文实例讲述了asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码.分享给大家供大家参考,具体如下: <%@ WebHandler Language="C#" Class="GetQRCode" %> using System; using System.Web; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtW

用Jquery访问WebService并返回Json的代码第1/3页_实用技巧

在我们的应用中一般会是这样的,使用了jquery作为客户端框架,ajax请求也通常返回html或者json.html这里就不讨论了.返回json一般都是搞一个handler.ashx来处理请求,拼凑字符串来返回json.从而放弃了ws,因为ws返回的是xml,使用起来不方便. 所以我觉着比较完美的解决方法是让ws返回json而且不用asp.net ajax的客户端框是比较理想的解决方法. 通过观测发现asp.net ajax的客户端框架请求webservice的时候返回的是json,为什么web

简单的ASP统计制作实例_应用技巧

我做了一个网站,当然啦,跟大家一样,也摆了个计数器在上面,每天看计数器都在不断的翻,心里很高兴,不过后来我又想,到底是谁看了我的网站啊?是新朋友还是老朋友啊?也不知他们来了多少次,我还想给他们都编上号,于是我申请了 免费统计,不过一连换了N个都不满意,唉,看来,只有自己动手才能丰衣足食了,说干就干,还望高手笑话之于,不访指教. 我以ACCESS库为例子,其实用SQL SERVER库也只要改一下链接库的语句就得啦,库结构如下 库文件名: CONT.ASP 本来是CONT.MDB但在建好后把扩展名改