-------------------------------控件源码
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace AjaxControl
{
/// <summary>
///AjaxLogin 的摘要说明
/// </summary>
public class AjaxLogin:CompositeControl
{
private AjaxLoginContainer _templateContainer;
private ITemplate _loginTemplate;
[PersistenceMode(PersistenceMode.InnerProperty ),TemplateContainer(typeof(AjaxLogin ))]
public ITemplate LayoutTemplate
{
get
{
return this._loginTemplate;
}
set
{
this._loginTemplate =value;
base.ChildControlsCreated = false;
}
}
public AjaxLogin()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.ClientScript.IsClientScriptBlockRegistered(Page.GetType(), "js4ajaxLoginControl"))
{
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "js4ajaxLoginControl", "<script language=/"javascript/" type=/"text/javascript/" src=/"ajaxLogin.js/" ></script>", false);
}
}
protected override void CreateChildControls()
{
this.Controls.Clear();
this._templateContainer = new AjaxLoginContainer(this);
ITemplate layoutTemplate = this.LayoutTemplate;
if (layoutTemplate == null)
{
this._templateContainer.EnableViewState = false;
this._templateContainer.EnableTheming = false;
layoutTemplate = new AjaxLoginTemplate(this);
}
layoutTemplate.InstantiateIn(this._templateContainer);
this.Controls.Add(this._templateContainer);
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
Control uLv= this.FindControl("LoginView");
Control uLs = this.FindControl("LoginStatus");
Control uName =this.FindControl("UserName");
Control uPwd = this.FindControl("Password");
Control uLi = this.FindControl("LoginIn");
Control uLo = this.FindControl("LoginOut");
Control uCs = this.FindControl("CurrentUser");
Control uRm = this.FindControl("RememberMe");
if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), this.UniqueID))
{
AjaxLoginContainer ajc = this._templateContainer;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendLine("<script language=/"javascript/" type=/"text/javascript/">");
sb.AppendFormat("var jx_{0}=new ajaxLogin(/"{0}/",/"{1}/",/"{2}/",/"{3}/",/"{4}/",/"{5}/",/"{6}/",/"{7}/",/"{8}/");",
this.ClientID, uLv.ClientID, uName.ClientID, uPwd.ClientID, uLi.ClientID,
uLs.ClientID, uCs.ClientID, uLo.ClientID, uRm.ClientID);
sb.AppendFormat("jx_{0}.isOnline(jx_{0}.onCheckUserCompleted,jx_{0}.onHttpStatusError);", this.ClientID);
sb.AppendFormat("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), this.UniqueID, sb.ToString(), false);
}
}
private sealed class AjaxLoginTemplate : ITemplate
{
private AjaxLogin _owner;
public AjaxLoginTemplate(AjaxLogin owner)
{
this._owner = owner;
}
#region ITemplate 成员
public void InstantiateIn(Control container)
{
AjaxLoginContainer lc = (AjaxLoginContainer)container;
CreateControls(lc);
}
#endregion
private void CreateControls(AjaxLoginContainer loginContainer)
{
TextBox tb = new TextBox();
tb.ID = "UserName";
tb.TextMode = TextBoxMode.SingleLine;
loginContainer.UserName = tb;
TextBox pwd = new TextBox();
pwd.ID = "Password";
pwd.TextMode = TextBoxMode.Password;
loginContainer.Password = pwd;
Button lgIn = new Button();
lgIn.ID = "LoginIn";
lgIn.Text = "登录";
lgIn.UseSubmitBehavior = false;
loginContainer.LoginInButton = lgIn;
CheckBox cb = new CheckBox();
cb.ID = "RememberMe";
cb.Text = "RememberMe";
loginContainer.RememberMe = cb;
Label lgN = new Label();
lgN.ID = "CurrentUser";
lgN.Text = "";
loginContainer.CurrentUser = lgN;
Button lgOut = new Button();
lgOut.ID = "LoginOut";
lgOut.Text = "注销";
lgOut.UseSubmitBehavior = false;
loginContainer.LoginOutButton = lgOut;
Panel lgView = new Panel();
lgView.ID = "LoginView";
loginContainer.LoginView = lgView;
Panel lgStatus = new Panel();
lgStatus.ID = "LoginStatus";
loginContainer.LoginStatus = lgStatus;
}
}
internal sealed class AjaxLoginContainer : WebControl
{
public TextBox UserName;
public TextBox Password;
public CheckBox RememberMe;
public Button LoginInButton;
public Label CurrentUser;
public Button LoginOutButton;
public Panel LoginView;
public Panel LoginStatus;
private AjaxLogin _owner;
public AjaxLoginContainer(AjaxLogin owner)
{
_owner = owner;
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
}
public override void RenderEndTag(HtmlTextWriter writer)
{
}
}
}
}
------------------------ajaxLogin.js---------------------
function $(id){ return document.getElementById(id);};
function $F(id) { return $(id).value;};
function $Event(id,eventName,funName){
var o=$(id);
if(!o["evtAdd"])
{
//o.detachEvent ? o.detachEvent("on"+eventName,funName ): o.removeEventListener(eventName ,funName ,false );
o.attachEvent ? o.attachEvent("on"+eventName,funName):o.addEventListener(eventName,funName,false );
o["evtAdd"]=true ;
}
}
function $Text(id,msg){
var o=$(id);
o.innerHTML=msg;
}
function messageData(httpResponseText){
this.responseText=httpResponseText;
var code=0;
var desc="";
this.msgCode=function(){
var tmp="";
try
{
tmp=this.responseText.substring(0,2);
}
catch(e)
{
}
switch(tmp )
{
case "0:":
code =0;
break;
case "1:":
code =1;
break ;
case "2:":
code =1;
break ;
case "3:":
code =1;
break ;
case "4:":
code =1;
break ;
case "5:":
code =5;
break;
default:
code =-1;
break ;
}
return code ;
}
this.msgDesc=function(){
try
{
desc =this.responseText.substring(2);
}
catch(e)
{
}
return desc ;
}
}
function ajaxLogin(lgoinViewId,loginCtrlId,lgUserName,lgUserPwd,lgCmd,loginStatusId,loginStatusName,loginOutId,loginRemberMe){
this.loginViewId=lgoinViewId ;
this.loginControlId=loginCtrlId ;
this.loginUserName=lgUserName ;
this.loginPassword=lgUserPwd ;
this.loginButton=lgCmd ;
this.loginStatusId=loginStatusId ;
this.loginStatusName=loginStatusName ;
this.loginOutButton=loginOutId ;
this.loginRemberMeId=loginRemberMe;
var cTh=this ;
this.init=function(){
var http=false ;
if(typeof ActiveXObject !="undefined"){
try
{
http=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
http=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
http=false ;
}
}
} else if(XMLHttpRequest ){
try
{
http=new XMLHttpRequest();
}
catch(e)
{
http=false ;
}
}
if(http)
{
$Event(cTh.loginButton,"click",cTh.loginClick );
$Event(cTh.loginOutButton ,"click",cTh.loginOutClick );
}
return http ;
}
this.showIn=function(){
$(cTh.loginControlId).style.display="none";
$(cTh.loginStatusId).style.display="";
}
this.showOut=function(){
$(cTh.loginStatusId).style.display="none";
$(cTh.loginControlId).style.display="";
}
this.clear=function(){
$(cTh.loginUserName ).value="";
$(cTh.loginPassword ).value="";
try
{
$(cTh.loginRemberMeId ).checked=false ;
}
catch(e)
{
}
}
this.loginOut=function(onCompleted,onRunning,onError){
var http=cTh.init();
if(!http)
return ;
http.open("GET","LoginOut.aspx",true);
http.onreadystatechange=function(){
if(http.readyState==4){
if(http.status==200){
onCompleted();
} else {
onError();
}
} else {
onRunning();
}
}
http.send(null);
}
this.loginOutComplected=function(){
cTh.showOut ();
}
this.loginOutRunning=function(){
}
this.loginOutErr=function (){
}
this.loginClick=function(evt){
var name=$F(cTh.loginUserName );
var pwd=$F(cTh.loginPassword );
var rm="0"
try
{
rm=$(cTh.loginRemberMeId ).checked ? "1":"0";
}
catch(e)
{
}
cTh.login(name ,pwd,rm,cTh.onLoginCompleted ,cTh.onHttpStatusError ,cTh.onLoginRunning);
alert("You click");
if(window.event){
window.event.returnValue=false ;
} else {
evt.preventDefault();
}
}
this.loginOutClick=function(evt){
cTh.loginOut(cTh.loginOutComplected ,cTh.loginOutRunning ,cTh.loginOutErr);
if(window.event){
window.event.returnValue=false ;
} else {
evt.preventDefault();
}
}
this.login=function(userName,passwrod,remberMe,onCompletedCallback,onErrorCallback,onRunningCallback){
var http= cTh.init();
if(!http)
return
http.open("POST","Login.aspx",true );
http.onreadystatechange=function(){
var state=http.readyState;
if(http.readyState==4){
if(http.status==200){
onCompletedCallback(http.responseText);
} else {
onErrorCallback(http.status);
}
} else {
if(onRunningCallback ){
onRunningCallback(state);
}
}
}
var params="UserName="+escape(userName)+"&Password="+escape(passwrod )+"&RemberMe="+remberMe;
http.send(params);
}
this.onLoginRunning=function (state){
}
this.onLoginCompleted=function(data){
var msg=new messageData(data);
var code=msg.msgCode ();
debugger
var desc=msg.msgDesc ();
switch(code )
{
case 0:
cTh.showIn();
$Text(cTh.loginStatusName ,desc );
cTh.clear ();
break ;
case 1:
case 2:
case 3:
case 4:
case 5:
alert(desc);
break;
default :
alert("浏览器脚本错误");
break ;
}
}
this.isOnline=function(onCompletedCallback,onErrorCallback){
var http=cTh.init ();
if(!http )
return false ;
http.open("GET","Chk.aspx",true );
http.onreadystatechange=function(){
var state=http.readyState;
if(http.readyState==4){
if(http.status==200){
onCompletedCallback(http.responseText);
} else {
onErrorCallback(http.status);
}
}
}
http.send(null);
}
this.onCheckUserCompleted=function(data){
var msg=new messageData(data );
var code=msg.msgCode ();
switch(code )
{
case 0:
// alert("用户已经登陆:"+msg.msgDesc() );
cTh.showIn();
$Text(cTh.loginStatusName ,msg.msgDesc ());
break;
case 1:
// alert("用户没有登陆")
cTh.showOut();
break;
default:
break;
}
}
this.onHttpStatusError=function(status){
alert("服务器错误:"+status );
}
}
---------------------------------------HttpHandler.cs-----------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///LoginHttpHandler 的摘要说明
/// </summary>
public class LoginHttpHandler:IHttpHandler
{
public LoginHttpHandler()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -1;
context.Response.Write("0:Success");
}
#endregion
}
public class CheckHttpHandler : IHttpHandler
{
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -100;
context.Response.Write("1:OK");
}
#endregion
}
public class LoginOutHttpHandler : IHttpHandler
{
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -100;
context.Response.Write("0:Success");
}
#endregion
}
---------------------------------web.config------------------------
<add name="Login" verb="*" path="Login.aspx" type="LoginHttpHandler"/>
<add name="LoginChek" verb="*" path="Chk.aspx" type="CheckHttpHandler"/>
<add name="LoginOut" verb="*" path="LoginOut.aspx" type="LoginOutHttpHandler"/>
----------------------------------default.aspx----------------------
<jx:AjaxLogin ID="lgView" runat="server">
<LayoutTemplate>
<asp:Panel ID="LoginView" runat="server">
用户名:<asp:TextBox ID="UserName" runat="server"></asp:TextBox>密码:<asp:TextBox ID="Password" TextMode="Password" runat="server" ></asp:TextBox><asp:CheckBox ID="RememberMe" runat="server"/>
<asp:Button ID="LoginIn" Text="LoginIn" runat="server"/>
</asp:Panel>
<asp:Panel ID="LoginStatus" runat="server">
<asp:Label ID="CurrentUser" runat="server" ></asp:Label><asp:Button ID="LoginOut" Text="LoginOut" runat="server" />
</asp:Panel>
</LayoutTemplate>
</jx:AjaxLogin>
------------------------------执行效果:IE7 -----------------------
--------------------------------------Firefox 2.0--------------------------
-------------------------------------目前就写到这里了。
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace AjaxControl
{
/// <summary>
///AjaxLogin 的摘要说明
/// </summary>
public class AjaxLogin:CompositeControl
{
private AjaxLoginContainer _templateContainer;
private ITemplate _loginTemplate;
[PersistenceMode(PersistenceMode.InnerProperty ),TemplateContainer(typeof(AjaxLogin ))]
public ITemplate LayoutTemplate
{
get
{
return this._loginTemplate;
}
set
{
this._loginTemplate =value;
base.ChildControlsCreated = false;
}
}
public AjaxLogin()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.ClientScript.IsClientScriptBlockRegistered(Page.GetType(), "js4ajaxLoginControl"))
{
Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "js4ajaxLoginControl", "<script language=/"javascript/" type=/"text/javascript/" src=/"ajaxLogin.js/" ></script>", false);
}
}
protected override void CreateChildControls()
{
this.Controls.Clear();
this._templateContainer = new AjaxLoginContainer(this);
ITemplate layoutTemplate = this.LayoutTemplate;
if (layoutTemplate == null)
{
this._templateContainer.EnableViewState = false;
this._templateContainer.EnableTheming = false;
layoutTemplate = new AjaxLoginTemplate(this);
}
layoutTemplate.InstantiateIn(this._templateContainer);
this.Controls.Add(this._templateContainer);
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
Control uLv= this.FindControl("LoginView");
Control uLs = this.FindControl("LoginStatus");
Control uName =this.FindControl("UserName");
Control uPwd = this.FindControl("Password");
Control uLi = this.FindControl("LoginIn");
Control uLo = this.FindControl("LoginOut");
Control uCs = this.FindControl("CurrentUser");
Control uRm = this.FindControl("RememberMe");
if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), this.UniqueID))
{
AjaxLoginContainer ajc = this._templateContainer;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendLine("<script language=/"javascript/" type=/"text/javascript/">");
sb.AppendFormat("var jx_{0}=new ajaxLogin(/"{0}/",/"{1}/",/"{2}/",/"{3}/",/"{4}/",/"{5}/",/"{6}/",/"{7}/",/"{8}/");",
this.ClientID, uLv.ClientID, uName.ClientID, uPwd.ClientID, uLi.ClientID,
uLs.ClientID, uCs.ClientID, uLo.ClientID, uRm.ClientID);
sb.AppendFormat("jx_{0}.isOnline(jx_{0}.onCheckUserCompleted,jx_{0}.onHttpStatusError);", this.ClientID);
sb.AppendFormat("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), this.UniqueID, sb.ToString(), false);
}
}
private sealed class AjaxLoginTemplate : ITemplate
{
private AjaxLogin _owner;
public AjaxLoginTemplate(AjaxLogin owner)
{
this._owner = owner;
}
#region ITemplate 成员
public void InstantiateIn(Control container)
{
AjaxLoginContainer lc = (AjaxLoginContainer)container;
CreateControls(lc);
}
#endregion
private void CreateControls(AjaxLoginContainer loginContainer)
{
TextBox tb = new TextBox();
tb.ID = "UserName";
tb.TextMode = TextBoxMode.SingleLine;
loginContainer.UserName = tb;
TextBox pwd = new TextBox();
pwd.ID = "Password";
pwd.TextMode = TextBoxMode.Password;
loginContainer.Password = pwd;
Button lgIn = new Button();
lgIn.ID = "LoginIn";
lgIn.Text = "登录";
lgIn.UseSubmitBehavior = false;
loginContainer.LoginInButton = lgIn;
CheckBox cb = new CheckBox();
cb.ID = "RememberMe";
cb.Text = "RememberMe";
loginContainer.RememberMe = cb;
Label lgN = new Label();
lgN.ID = "CurrentUser";
lgN.Text = "";
loginContainer.CurrentUser = lgN;
Button lgOut = new Button();
lgOut.ID = "LoginOut";
lgOut.Text = "注销";
lgOut.UseSubmitBehavior = false;
loginContainer.LoginOutButton = lgOut;
Panel lgView = new Panel();
lgView.ID = "LoginView";
loginContainer.LoginView = lgView;
Panel lgStatus = new Panel();
lgStatus.ID = "LoginStatus";
loginContainer.LoginStatus = lgStatus;
}
}
internal sealed class AjaxLoginContainer : WebControl
{
public TextBox UserName;
public TextBox Password;
public CheckBox RememberMe;
public Button LoginInButton;
public Label CurrentUser;
public Button LoginOutButton;
public Panel LoginView;
public Panel LoginStatus;
private AjaxLogin _owner;
public AjaxLoginContainer(AjaxLogin owner)
{
_owner = owner;
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
}
public override void RenderEndTag(HtmlTextWriter writer)
{
}
}
}
}
------------------------ajaxLogin.js---------------------
function $(id){ return document.getElementById(id);};
function $F(id) { return $(id).value;};
function $Event(id,eventName,funName){
var o=$(id);
if(!o["evtAdd"])
{
//o.detachEvent ? o.detachEvent("on"+eventName,funName ): o.removeEventListener(eventName ,funName ,false );
o.attachEvent ? o.attachEvent("on"+eventName,funName):o.addEventListener(eventName,funName,false );
o["evtAdd"]=true ;
}
}
function $Text(id,msg){
var o=$(id);
o.innerHTML=msg;
}
function messageData(httpResponseText){
this.responseText=httpResponseText;
var code=0;
var desc="";
this.msgCode=function(){
var tmp="";
try
{
tmp=this.responseText.substring(0,2);
}
catch(e)
{
}
switch(tmp )
{
case "0:":
code =0;
break;
case "1:":
code =1;
break ;
case "2:":
code =1;
break ;
case "3:":
code =1;
break ;
case "4:":
code =1;
break ;
case "5:":
code =5;
break;
default:
code =-1;
break ;
}
return code ;
}
this.msgDesc=function(){
try
{
desc =this.responseText.substring(2);
}
catch(e)
{
}
return desc ;
}
}
function ajaxLogin(lgoinViewId,loginCtrlId,lgUserName,lgUserPwd,lgCmd,loginStatusId,loginStatusName,loginOutId,loginRemberMe){
this.loginViewId=lgoinViewId ;
this.loginControlId=loginCtrlId ;
this.loginUserName=lgUserName ;
this.loginPassword=lgUserPwd ;
this.loginButton=lgCmd ;
this.loginStatusId=loginStatusId ;
this.loginStatusName=loginStatusName ;
this.loginOutButton=loginOutId ;
this.loginRemberMeId=loginRemberMe;
var cTh=this ;
this.init=function(){
var http=false ;
if(typeof ActiveXObject !="undefined"){
try
{
http=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
http=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
http=false ;
}
}
} else if(XMLHttpRequest ){
try
{
http=new XMLHttpRequest();
}
catch(e)
{
http=false ;
}
}
if(http)
{
$Event(cTh.loginButton,"click",cTh.loginClick );
$Event(cTh.loginOutButton ,"click",cTh.loginOutClick );
}
return http ;
}
this.showIn=function(){
$(cTh.loginControlId).style.display="none";
$(cTh.loginStatusId).style.display="";
}
this.showOut=function(){
$(cTh.loginStatusId).style.display="none";
$(cTh.loginControlId).style.display="";
}
this.clear=function(){
$(cTh.loginUserName ).value="";
$(cTh.loginPassword ).value="";
try
{
$(cTh.loginRemberMeId ).checked=false ;
}
catch(e)
{
}
}
this.loginOut=function(onCompleted,onRunning,onError){
var http=cTh.init();
if(!http)
return ;
http.open("GET","LoginOut.aspx",true);
http.onreadystatechange=function(){
if(http.readyState==4){
if(http.status==200){
onCompleted();
} else {
onError();
}
} else {
onRunning();
}
}
http.send(null);
}
this.loginOutComplected=function(){
cTh.showOut ();
}
this.loginOutRunning=function(){
}
this.loginOutErr=function (){
}
this.loginClick=function(evt){
var name=$F(cTh.loginUserName );
var pwd=$F(cTh.loginPassword );
var rm="0"
try
{
rm=$(cTh.loginRemberMeId ).checked ? "1":"0";
}
catch(e)
{
}
cTh.login(name ,pwd,rm,cTh.onLoginCompleted ,cTh.onHttpStatusError ,cTh.onLoginRunning);
alert("You click");
if(window.event){
window.event.returnValue=false ;
} else {
evt.preventDefault();
}
}
this.loginOutClick=function(evt){
cTh.loginOut(cTh.loginOutComplected ,cTh.loginOutRunning ,cTh.loginOutErr);
if(window.event){
window.event.returnValue=false ;
} else {
evt.preventDefault();
}
}
this.login=function(userName,passwrod,remberMe,onCompletedCallback,onErrorCallback,onRunningCallback){
var http= cTh.init();
if(!http)
return
http.open("POST","Login.aspx",true );
http.onreadystatechange=function(){
var state=http.readyState;
if(http.readyState==4){
if(http.status==200){
onCompletedCallback(http.responseText);
} else {
onErrorCallback(http.status);
}
} else {
if(onRunningCallback ){
onRunningCallback(state);
}
}
}
var params="UserName="+escape(userName)+"&Password="+escape(passwrod )+"&RemberMe="+remberMe;
http.send(params);
}
this.onLoginRunning=function (state){
}
this.onLoginCompleted=function(data){
var msg=new messageData(data);
var code=msg.msgCode ();
debugger
var desc=msg.msgDesc ();
switch(code )
{
case 0:
cTh.showIn();
$Text(cTh.loginStatusName ,desc );
cTh.clear ();
break ;
case 1:
case 2:
case 3:
case 4:
case 5:
alert(desc);
break;
default :
alert("浏览器脚本错误");
break ;
}
}
this.isOnline=function(onCompletedCallback,onErrorCallback){
var http=cTh.init ();
if(!http )
return false ;
http.open("GET","Chk.aspx",true );
http.onreadystatechange=function(){
var state=http.readyState;
if(http.readyState==4){
if(http.status==200){
onCompletedCallback(http.responseText);
} else {
onErrorCallback(http.status);
}
}
}
http.send(null);
}
this.onCheckUserCompleted=function(data){
var msg=new messageData(data );
var code=msg.msgCode ();
switch(code )
{
case 0:
// alert("用户已经登陆:"+msg.msgDesc() );
cTh.showIn();
$Text(cTh.loginStatusName ,msg.msgDesc ());
break;
case 1:
// alert("用户没有登陆")
cTh.showOut();
break;
default:
break;
}
}
this.onHttpStatusError=function(status){
alert("服务器错误:"+status );
}
}
---------------------------------------HttpHandler.cs-----------------------
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///LoginHttpHandler 的摘要说明
/// </summary>
public class LoginHttpHandler:IHttpHandler
{
public LoginHttpHandler()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -1;
context.Response.Write("0:Success");
}
#endregion
}
public class CheckHttpHandler : IHttpHandler
{
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -100;
context.Response.Write("1:OK");
}
#endregion
}
public class LoginOutHttpHandler : IHttpHandler
{
#region IHttpHandler 成员
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.Expires = -100;
context.Response.Write("0:Success");
}
#endregion
}
---------------------------------web.config------------------------
<add name="Login" verb="*" path="Login.aspx" type="LoginHttpHandler"/>
<add name="LoginChek" verb="*" path="Chk.aspx" type="CheckHttpHandler"/>
<add name="LoginOut" verb="*" path="LoginOut.aspx" type="LoginOutHttpHandler"/>
----------------------------------default.aspx----------------------
<jx:AjaxLogin ID="lgView" runat="server">
<LayoutTemplate>
<asp:Panel ID="LoginView" runat="server">
用户名:<asp:TextBox ID="UserName" runat="server"></asp:TextBox>密码:<asp:TextBox ID="Password" TextMode="Password" runat="server" ></asp:TextBox><asp:CheckBox ID="RememberMe" runat="server"/>
<asp:Button ID="LoginIn" Text="LoginIn" runat="server"/>
</asp:Panel>
<asp:Panel ID="LoginStatus" runat="server">
<asp:Label ID="CurrentUser" runat="server" ></asp:Label><asp:Button ID="LoginOut" Text="LoginOut" runat="server" />
</asp:Panel>
</LayoutTemplate>
</jx:AjaxLogin>
------------------------------执行效果:IE7 -----------------------
--------------------------------------Firefox 2.0--------------------------
-------------------------------------目前就写到这里了。