利用ajax技术验证数据是否存在的一个简单例子

以前做添加数据的时候,是利用存储过程在数据库中首先做判断,如果存在,返回一个值来验证数据已经存在

现在注册一般论坛都可以直接验证,可以说ajax给我们带来了很大的便利,尤其是用户体验上,最近也在学习ajax技术。

项目中添加数据的时候需要对数据库的数据进行检查,顺便查了下资料,写了个简单的例子,记录下来,可以让和我一样入门级别的师弟们做个简单的参考:

由于对ajax的本质还没有深入了解,所以这里用了asp.net ajax的scriptManger和webservice(我一般都是由应用开始学的,先用控件,回头用熟悉了后追究其原理,还望大虾们多多指教学习方法)

下面说下例子的实现原理:

水平有限,写的有错的地方还望多多指教:
当文本框TextBox失去焦点的时候,onblur事件中触发的js方法中异步调用webservice中的验证方法,返回数据是否存在

直接看例子吧:

aspx页面:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BuMenTest.aspx.cs" Inherits="BuMenTest" %>
  2. <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6.     <title>无标题页</title>
  7. </head>
  8. <body>
  9.     <form id="form1" runat="server">
  10.         <asp:ScriptManager ID="ScriptManager1" runat="server">
  11.         <Services>
  12.          <!--注册一个webservice-->
  13.         <asp:ServiceReference Path="CheckBuMenService.asmx" />
  14.         </Services>
  15.         <Scripts>
  16.          <!--注册一个js文件也可以在<head>标签内使用<script type="text/javascript" src="script/JScript.js"> 效果一样,scriptmanager提供这个方法主要是用来注册ajax提供的一些js库的-->
  17.         <asp:ScriptReference Path="script/JScript.js" />
  18.         </Scripts>
  19.         </asp:ScriptManager>
  20.         <asp:TextBox ID="txtBuMen" runat="server"></asp:TextBox>
  21.         <asp:Label ID="lblMessage" runat="server"></asp:Label>
  22.         <asp:Button ID="Button1" runat="server" Text="Button" />
  23.     </form>
  24. </body>
  25. </html>

js文件:
  1. function CheckBuMen(){
  2.    //方法中直接调用webservice中的方法,或许对js的陌生吧,很不理解这样的赋值方法,   把CheckBuMenService.HasBuMen(document.getElementById('txtBuMen').value)得到的值赋值给jsj函数Complete直接写成下面的方式;
  3.     requestService = CheckBuMenService.HasBuMen(document.getElementById('txtBuMen').value, Complete);
  4.     //下面的return false的作用还在理解中
  5.    //发了个帖子问了下 得知,如果不满足条件,不执行后台代码~
  6.     return false; 
  7. }
  8. function Complete(result){
  9.     if(result){
  10.         //下面注释掉的是可以在页面中放一个Label(我习惯用asp.net的服务器控件)ID=lblMessage
  11.         //document.getElementById('lblMessager').innerHTML='提示:该部门已经存在';
  12.         alert("提示:该部门已经存在");
  13.     }
  14.    else{
  15.         //document.getElementById('lblMessager').innerHTML='提示:该部门不存在';
  16.          alert("提示:该部门不存在");
  17.     }
  18. }

与页面相关的cs文件:
  1. sing System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. public partial class BuMenTest : System.Web.UI.Page
  12. {
  13.     protected void Page_Load(object sender, EventArgs e)
  14.     {
  15.         txtBuMen.Attributes.Add("onblur""javascript:return CheckBuMen()");
  16.     }
  17. }

webservice相关的cs文件:
  1. using System;
  2. using System.Web;
  3. using System.Collections;
  4. using System.Web.Services;
  5. using System.Web.Services.Protocols;
  6. /// <summary>
  7. /// JingNoValidator 的摘要说明
  8. /// </summary>
  9. [WebService(Namespace = "http://tempuri.org/")]
  10. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  11. //这句一定要加上,不然js访问不到
  12. [System.Web.Script.Services.ScriptService]
  13. public class CheckBuMenService : System.Web.Services.WebService
  14. {
  15.     public JingNoValidator()
  16.     {
  17.         //如果使用设计的组件,请取消注释以下行 
  18.         //InitializeComponent(); 
  19.     }
  20.     #region 验证部门是否存在
  21.     public bool HasBuMen(string BuMen)
  22.     {
  23.         return BuMen(BuMen);
  24.     }
  25.     //把验证过程隐藏了,不知道算不算对源代码的一种保护??
  26.     //这点回头请高手指点
  27.     private bool BuMen(string BuMen)
  28.     {
  29.         string sql = string.Format("SELECT ID FROM BuMen WHERE [Name]='{0}'",BuMen);
  30.         //SqlHelper是我们项目中的一个操作数据库的一个类
  31.         //这里可以自己写一个对数据库的连接以及验证的方法
  32.         //using(System.Data.SqlClient.SqlConnection conn=new System.Data.SqlClient.SqlConnection(connString)){//TODO}
  33.         return SqlHelper.Exists(sql);
  34.     }
  35.     #endregion
  36. }

很简单的例子,希望对初学者有帮助,有疑问我可以把自己掌握的说说,毕竟我也才开始接触。
 结果就不指出了,如果文不能框输入的数据数据库中存在,则alert出存在,反之不存在~


  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值