ASP.NET基于JQUERY的AJAX的验证登录(JSON)
近来想做个JQUERY的AJAX的登录验证,登录不是问题,但是JQUERY的数据验证格式是JSON格式,这下有点难道我了,
因为我以前没学过JSON,于是上百度和google上搜索关于这方面的案例,但是搜到都是PHP的,.NET的少之又少(几乎没有益一个完整的DEMO),由于现在PHP开源框架非常多,而且他们的内部已经封装好了对JSON数据的转化,所以开发人员根本不必关心它内部是怎么转化的,所以对于PHP来说这个JQUERY验证就容易的所了。
其实.NET内部有对数据转化的类库,
比如using System.Runtime.Serialization.Json
可以调用这里面的方法岁数据JSON序列还的操作,但是我研究半天就输不出JSON格式的数据,于是干脆自己写个。
下面是自己写的DEMO,
注意看我的编写目录。
Default.aspx
<%@ 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>
<link type="text/css" href="css/thickbox.css" rel=Stylesheet />
<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<script src="js/thickbox.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div style="margin-left:auto; margin-right:auto;width:400px;">
<a href="ajaxLogin.html?height=120&width=250&modal=false" class="thickbox" title="请登录">
我要进行JQUERY登录验证</a>
<br />
账号:admin<br/>
密码:admin
</div>
</form>
</body>
</html>
ajaxLogin.html
<!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>
<title>登录</title>
<!--调用JQUERY内部函数-->
<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<!--调用登录函数-->
<script src="js/login.js" type="text/javascript"></script>
</head>
<body>
<form method="post" action="login.aspx" id="login_form" name="login_form">
<div style="text-align:center ">
<table border="0" cellpadding="3" cellspacing="3" style="margin:0 auto;" >
<tr>
<td><label> Username</label>
:</td>
<td><input name="login_id" id="login_id" type="text" size="20"></td>
</tr>
<tr>
<td><label> Password</label>
:</td>
<td><input name="login_pwd" id="login_pwd" type="password" size="20"></td>
</tr>
<tr align="right">
<td colspan="2">
<input type="button" id="LoginBtn" value="login" > <input type="button" id="Submit1" value="Cancel" onclick="tb_remove()"></td>
</tr>
</table>
<div id="confirm"></div>
</div>
</form>
</body>
</html>
login.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %>
<!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>
</div>
</form>
</body>
</html>
login.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//执行登录验证的方法
checklogin();
}
public void checklogin()
{
//获得登录页面POST过来的参数
string username = Request.Params["id"].ToString();
string userpwd= Request.Params["pwd"].ToString();
//准备实例化已经构造好的类
JsonClass jc;
if (username == "admin" && userpwd == "admin")
{
//如果登录成功则构造这样序列化好的JSON格式的数据
jc = new JsonClass("login success", "", 1);
}
else
{
//否则是这样的
jc = new JsonClass("login faile", "", 0);
}
//输出带有JSON格式的数据
Response.Write(jc);
//发送JSON格式的数据到客户端并终止该页的执行
//注意这个方法必须有否则JSON输出到客户端在ajax判断会不正确
Response.End();
}
}
login.js
// JScript 文件
$(document).ready(function(){
//获取登录按的事件并激活click事件
$('#LoginBtn').click(function(){
login();
});
});
function login()
{
var login_id=$("#login_id").val();
var login_pwd=$("#login_pwd").val();
if (login_id =="")
{
$("#confirm").html("请输入登录ID");
$("#login_id").focus();
return false;
}
if(login_pwd =="")
{
$("#confirm").html("请输入登录密码");
$("#login_pwd").focus();
return false;
}
$.ajax({
type: "POST",//URL方式为POST
url: "login.aspx",//这里是指向登录验证的页面
data:'id='+login_id+'&pwd='+login_pwd,//把要验证的参数传过去
dataType:'json',//数据类型为JSON格式的验证
//在发送数据之前要运行的函数
beforeSend:function(){
$("#confirm").html("登录中.........");
},
success:function(data)
{
//这是个重点,根据验证页面(login.aspx)输出的JSON格式数据判断是否登录成功
//sta就是那个输出到客户端的标示
if(data.sta==1)
{
$("#confirm").html("登录成功!");location.href='loginOK.htm';
}
else
{
alert('密码都没输入正确还想进?哼!');
}
}
});
}
JsonClass.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// JsonClass 的摘要说明
/// </summary>
public class JsonClass
{
//手动输出JSON格式的数据
//微软的的那个自带的对数据JSON序列化的东西太麻烦了
//毛主席说过:自己动手丰衣足食
public JsonClass(string info,string data,int sta)
{
//
// TODO: 在此处添加构造函数逻辑
//
this.info = info;
this.data = data;
this.sta = sta;
}
string info;
string data;
int sta;
public string Info
{
get { return info; }
set { this.info = value; }
}
public string Data
{
get { return data; }
set { this.data = value; }
}
public int Sta
{
get { return sta; }
set { this.sta = value; }
}
//重写ToString()方法,以便输出格式是标准的JSON格式
//具体Json是什么样的格式大家个在网上查查
public override string ToString()
{
return "{\"data\":\"" + data + "\",\"info\":\"" + info + "\",\"sta\":" + sta + "}";
}
}
jquery-1.2.6.js文件和thickbox.js大家可以到网上下载
文章出处:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/2008918/143293.html)