使用Ajax在javascript中调用后台C#函数

最近一段时间在紧跟一个网站的项目,数据库中用户表的UserName要求是唯一的,所以当用户选定一个用户名进行注册时要首先检查该用户名是否已被占用,并给出提示。起初的实现是:用户填写完注册表单提交后,在后台进行验证。但看到很多网站的设计是当用户填写完用户名,TextBox失去焦点后就会立即给出提示,比如https://passport.csdn.net/account/register,反应很迅速,应该是在前台进行检查的。今天花了些时间针对这一点查了一些资料。
 
js调用后台C#函数检测用户名时需要获取用户输入的用户名,然后检查数据库中是否已含有该用户名:
 
传递参数的方法,有的(http://www.cnblogs.com/morningwang/archive/2008/04/07/1140340.html)采用如下方法:
 
//后台
 
protected string CsharpVoid(string strCC)
{
   strCC = "你好!" + strCC;
   return strCC;
}
 
//前台
 
function Init()
{
   var v = "中国";
   var s = '<%=CsharpVoid("'+v+'") %>';
   alert(s);
}
 
我进行了尝试,结果并不如人所愿。后来绝决定使用Ajax来实现。由于之前了解的甚少,所以整个过程也走了不少弯路,幸运的是最后还是给弄出来了。具体实现步骤如下:
 
1.bin目录下添加引用:AjaxPro.2.dll
 
 并在后台Codefile中并添加using AjaxPro;
 
2.Web.config 中<system.webServer>里的<handlers>下添加,以下内容:
<add name="AjaxPro" verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>

3.Site.master的aspx文件中的<asp:ScriptManager> 添加 ,EnablePageMethods="true"。
 
4.使用方法:
 
1)类前添加:[AjaxNamespace("ANSP")](修改命名空间名称,可略过)
 
[AjaxNamespace("ANSP")]
 public partial class Physician_WUC_PhysicianInfor : System.Web.UI.UserControl
 {
 
}
 
2)Page_Load
 
protected void Page_Load(object sender, EventArgs e)
 {
  lca_dataservice = new lca_database_service.lca_database_service();
  Utility.RegisterTypeForAjax(typeof(Physician_WUC_PhysicianInfor));
 }
 
3)要调用的方法前添加:[AjaxPro.AjaxMethod]

[AjaxPro.AjaxMethod]
 public bool CheckUsernameExist(string username)
 {
  bool NotExist = false;
 
  try
  {
    System.Data.DataSet ds = lca_dataservice.readDoctor(username);
    if (ds == null || ds.Tables[0].Rows.Count <= 0)
    {
      NotExist = true;
    }
  }
  catch (Exception ex)
  {
    NotExist = false;
  }
  return NotExist;
 }

4)前台js调用方法:
 
var Exist = ANSP.CheckUsernameExist(userName).value;

Exist为函数返回值。
 
if(Exist==true)
{
 
  //用户名不存在
 
}else
 
{
 
  //用户名存在
 
}
 
经过以上设置,算是达到了预想的要求。

使用Ajax在javascript中调用后台C#函数的更多相关文章

  1. 利用ajax在javascript中获取后台的值

    <script type="text/javascript"> function login() { var sa = WebForm1.Hello().value; ...

  2. 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法

    技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...

  3. JAVAFX 2.0 javascript中调用java代码

    现在你已经知道如何在JavaFX中调用JavaScript.在本章中,你将了解到相反的功能——在web页面中调用JavaFX. 大体上的理念是在JavaFX程序中创建一个接口对象,并通过调用JSObj ...

  4. COM动态添加删除成员,类似JavaScript中调用的对象

    在JavaScript中调用对象时,可动态添加删除成员如: var obj=new Object; obj.member1='aaaaa'; obj.fun1=function() { alert(' ...

  5. ASP.NET#JavaScript中调用WebServer注意的问题

    1)要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,就要取消注销以下行:[System.Web.Script.Services.ScriptService](2)调用格式:命名空间 ...

  6. [转]Javascript中的自执行函数表达式

    [转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...

  7. 深入理解javascript中的立即执行函数(function(){…})()

    投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...

  8. 在javascript中关于变量与函数的提升

    在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2. ...

  9. javascript中的立即执行函数(function(){…})()

    javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包 ...

随机推荐

  1. swift:入门知识之函数与闭包

    1.swift中使用关键字func来声明和定义一个函数.调用函数使用它的名字加上小括号中的参数列表. 2.swift使用->方向符号分隔参数的名字和返回值类型 3.swift使用元组(tuple ...

  2. [转]“WARNING: soft rlimits too low” in MongoDB with Mac OS X

    转自:Programming and Technology If you get this warning when you connect to mongo shell in Mac OX X: * ...

  3. 重置mysql的root密码

    由于本人记性比较差,今天的mysql的root密码又忘记了,咋办呢?只能重置root的密码了.具体的操作步骤如下: 1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行, ...

  4. 【玩转Ubuntu】09. Ubuntu上安装apktool

    下载两个文件 到这里 https://code.google.com/p/android-apktool/downloads/list?q=label:Featured下载这个文件  1.  apkt ...

  5. Java WEB安全问题及解决方案

    1.弱口令漏洞   解决方案:最好使用至少6位的数字.字母及特殊字符组合作为密码.数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密.   ...

  6. [HDOJ1015]Safecracker(DFS, 组合数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 这都能过…… #include <algorithm> #include <i ...

  7. Post的请求案例

    1.简单的post请求案例 $.post(rootPath+"/jasframework/loginLog/getStatisticsInfoByUserId.do",functi ...

  8. notebook kernels

    http://10.139.97.132/user/8e6ef01ea71d3f988e61bf2db17c3031/api/kernels [{"id": "f0987 ...

  9. 在Datatables中加入错误提示功能

    经常用Datatables的童鞋一定碰到过当采用服务端请求的时候,一旦后台出现异常,Datatables的会一直卡在那里,中间的正在处理的提示一直停留着. 为了能给用户更好的体验,需要对Datatab ...

  10. HDU Sky数 2097

    解题思路:类比求出10进制数各个位上的数字之和,求出12进制和16进制上的数. #include<cstdio> #include<cstring> #include<a ...