javascript实现前后台数据的交互

摘要:
可以使用Microsoft提供的验证控件CustomValidator的前台代码:客户端验证控件functionValidationFunctionName//这是Microsoft控件指定的验证方法,必须以这种方式编写。

前几天的时候网友问了个技术性的问题,考虑了好几天,今天把自己总结出来的点点经验总结如下:

怎样使用用户注册时,自动的查找用户名字是否已经注册,其实总结起来很多种方式能实现,把最常用的几种方式列一下:

《1》用javascrpt实现用户名的查找功能,即当我们打开注册页面的时候就将已经注册的用户名放入客户端,此种方法适合于轻量级的用户注册,并且对系统的要求安全性不高的基础之上,放入客户端的kookie或者直接放在页面代码中,当我们用户输入的时候直接检查就行:

后台代码:

using System.Xml.Linq;

using System.Data.SqlClient;

using System.Text;

public partial class Default2 : System.Web.UI.Page

 {    

 protected ArrayList a1 = new ArrayList();    

protected void Page_Load(object sender, EventArgs e)   

  {        

 SqlConnection Conn = Cls_Data_Conn.Data_Conn();    

     SqlCommand sql = new SqlCommand("SELECT  U_Name FROM    Tb_User", Conn);    

     SqlDataReader myReader;        

 Conn.Open();       

  myReader = sql.ExecuteReader();

        while (myReader.Read())        

 {           

  a1.Add(myReader[0]);      

   }

        Conn.Close();      

   sql.Dispose();       

  Conn.Dispose();

        CreateJSArray();   

  }    

void CreateJSArray()    

 {      

   string[] array = (string[])a1.ToArray(typeof(string));//事先定义好的数组,类型转换,小知识点    

     ////创建js数组的脚本       

  //StringBuilder createJSScript = new StringBuilder(" function  ceshi() {  var jsArray = {"); ;

        StringBuilder he = new StringBuilder();    

     he.Append(" function  ceshi(obj)  {");      

   he.Append(" var name= new Array(");       

  foreach (string i in array)      

   {          

   he.Append("'" + i + "'" + ",");     

    }      

   he.Remove(he.Length - 1, 1);      

   he.Append(");");  

       he.Append(" for(var i=0;i<name.length;i++)     

  {      

 var avalue = name[i];       

  if(avalue ==obj)       

   alert('已存在') ;  } ");    

     //注册      

   //createJSScript.Append("}");     

    he.Append("}");   

      ClientScript.RegisterStartupScript(this.GetType(), "ceshi(obj)", he.ToString(), true);  

   }

}

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!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" >        </script> </head> <body>     <form runat="server">     <div>         </div>   
               <input runat ="server"  type="text" onblur ="ceshi(this.value)" />           </form> </body> </html>

《2》这种方式是大部分网站使用的,使用ajax检查用户名,借用第三个页面,这里面同样的有几个知识点需要自己去掌握,静态的方法实现传入后台数据,这也是ajax对xml语言的运用。

        可以使用微软给出的验证控件CustomValidator

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="kehuduanyanzheng .aspx.cs"     Inherits="kehuduanyanzheng_" %>

<!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 ValidationFunctionName(source, arguments)  

 //这个是微软控件规定的验证方法,必须这样写。

     {      var userName =document.getElementById("UserName");    

  var oBao = new ActiveXObject("Microsoft.XMLHTTP");       

  oBao.open("Get","Check.aspx?username=" + userName.value,false);     

     oBao.send();      var strResult = oBao.responseText;     

 //如果返回 1 就代表可以使用,否则不能通过验证    

  if (Number(strResult) == 1)           

  arguments.IsValid = true;     

    else       

      arguments.IsValid = false;    

  }     </script>

</head> <body>     <form runat="server">     <div>         <asp:TextBox runat="server"></asp:TextBox>         <asp:CustomValidator runat="server" ClientValidationFunction="ValidationFunctionName"             ControlToValidate="UserName" ErrorMessage="此用户名已经存在" SetFocusOnError="True" OnServerValidate="CustomValidator1_ServerValidate"             ValidateEmptyText="True"></asp:CustomValidator>         <asp:Button runat="server" Text="Button" OnClientClick="return  jiancha()" />     </div>     <div >         <input type="text" onblur =" return  ceshi()" />         <span id="dd"></span>     </div>       

  <script type ="text/javascript" >   

  function  ceshi()  //这个是自己定义的方法,同样的用来验证用户名。  

   {     var mingzi=document .getElementById ("Text1").value;   

   var oBao = new ActiveXObject("Microsoft.XMLHTTP");   

//通过微软规定的xmL统一标准进行数据的传输。        

 oBao.open("Get","Check.aspx?username=" + mingzi,false);         

 oBao.send();             var strResult = oBao.responseText;    

      dd.innerHTML ="<img src =\"images/loading.gif\" />"   

     setTimeout("yanchi("+strResult+")",1000);     

 //如果返回 1 就代表可以使用,否则不能通过验证         

  }     

 function  yanchi(strResult)    

  {           

   if (Number(strResult) == 1)      

        {             
                dd.innerHTML ="成功"     

         }          

     else            

  {               

            dd.innerHTML ="<img src =\"images/delete.png\" />"          

    }    

  }    

  function jiancha()    

  {     

  var mingzi=document .getElementById ("Text1").value;    

     if(mingzi=="")         

       {      

    alert ("请输入数据");     

        return false ;   

      }    

     else
        return  true ;        

     }   

    </script>    

 </form>

</body>

</html>

 后台代码:

  后台不用写任何代码。此处的应用的验证的是在第三个页面中:

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

public partial class Check : System.Web.UI.Page

{    

 protected void Page_Load(object sender, EventArgs e)   

  {       

 string  name=Request.QueryString["username"].ToString();  

       Response.Clear();   ///当我们进行检查时,必须的清空里面已有的数值    

     //检查用户名       

  if (name== "wu")       

      Response.Write("1");    

     else           

  Response.Write("0");      

            Response.End();  

   }

}

免责声明:文章转载自《javascript实现前后台数据的交互》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux--查询文件的第几行到第几行命令获得TextField对话框输入的数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 解析后台返回为Json数据的简单例子

大家好,今天给大家分享下Android解析Json的例子,我这里自己安装了Tomcat,让自己电脑充当下服务器,最重要的是,返回结果自己可以随便修改。 首先看下Json的定义,以及它和XML的比较: JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分...

Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

前言:由于之前没有接触过Hibernate框架,但是最近看一些博客深深被它的“效率”所吸引,所以这就来跟大家一起就着一个简单的例子来尝尝Spring全家桶里自带的JPA的鲜 Spring-DATA-JPA 简介 JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理J...

Oracle基础(九) Oracle的体系结构

一、Oracle体系结构概述:   Oracle的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。要了解Oracle数据库的体系结构,必须理解Oracle系统的重要概念和主要组件。   Oracle系统体系结构由三部分组成:内存结构,进程结构,存储结构。。如下图所示:        1、内存结构(SGA、PAG)   内存结构...

jquery ajax请求后台 的简单例子

jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据。 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。 最简单的情况下...

ThinkAdmin for PHP后台管理系统

ThinkAdmin for PHP后台管理系统 ThinkAdmin 是一个基于 Thinkphp 5.1.x 开发的后台管理系统,集成后台系统常用功能。基于 ThinkPHP 5.1 基础开发平台(后台开发) http://demo.thinkadmin.topThinkAdmin · ThinkAdmin V3.0 开发手册 · 看云https://...

【转】WPF之DataGrid应用

前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功能实现所折磨。网络上的解决方法太多,但也太杂。没法子,我只好硬着头皮阅览各种文献资料,然后不断的去尝试,总算小有成果。因此,把我学到的和大家分享一下,相信这篇文章会让你再很短的时间内学会DataGrid的大部分主要功能,而且很多难点都可以在里面找到解决方案。 由于涉及的应用...