首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

就剩60分了,求无刷新检测用户名解决思路

2012-01-22 
就剩60分了,求无刷新检测用户名上网看了一些例子,都不好用,不是说这个方法没被引用,就是那个方法没被引用,

就剩60分了,求无刷新检测用户名
上网看了一些例子,都不好用,不是说这个方法没被引用,就是那个方法没被引用,引用了也不好用。
        我想做的效果是,当用户输入用户名,用户名的文本框失去焦点后就检测用户名是否重复,不用再点击一个按钮才能检测,不知道用.NET   AJAX可不可以实现

[解决办法]
public string ValidateInput(string userName)
{
string su = "xxx ";
//可以在这里操作.
string retVal = "用户不存在,可以使用! ";

if(userName.Equals(su))
retVal = "用户名已存在,请选用其它用户名 ";

return retVal;
}
}


<script language= "javascript " type= "text/javascript ">
function ValidateInputData()
{
var txt = document.all[ "txtUserName "];

if(txt.value == " ")
{
Show( "用户名不能为空 ");
return false;
}

var _value = clsValdate.ValidateInput(txt.value).value;
if(_value != null)
{
Show(_value);
}

return true;
}

function Show(message)
{
var objMessage = document.all[ "spMessage "];
objMessage.style.display = " ";
objMessage.innerText = message;
}
</script>
一点点的思路 !
主要还是要靠AJAX实现拉

[解决办法]
我这里有一个程序,刚好是实现这个功能的。

首先页面中代码
<script type= "text/javascript " language= "javascript ">
var xmlHttp = null;
function CheckUser()
{
try
{
xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP ");
}
catch(err1)
{
try
{
xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP ");
}
catch(err2)
{
xmlHttp = new XMLHttpRequest();
}
}
var Text1 = document.getElementById( "Text1 ");
var url = "chkuser.aspx?User= " + Text1.value;
xmlHttp.open( "GET ",url,true);
xmlHttp.onreadystatechange = OnHandler;
xmlHttp.send(null);

}
function OnHandler()
{
if(xmlHttp.readyState == 4)
{
var isValid = xmlHttp.responseText;
var exists = document.getElementById( "exsits ");
exists.innerHTML = isValid.substring(0,4);
}
}
</script>
<input id= "Text1 " type= "text " onblur= "CheckUser() " /> <label d= "exsits "> </label> <br />

然后建一个chkuser.aspx,其后台代码改为
protected void Page_Load(object sender, EventArgs e)
{
string user = this.Request.QueryString[ "User "];

if (UserExist(user))
{
Response.Write( "存在 ");
}
else
{
Response.Write( "不存在 ");
}

}

private bool UserExist(string username)
{
ClassLib.Employee emp = new ClassLib.Employee();
return emp.EmpNameExist(username);
}
就可以了

[解决办法]
我有可以运行的程序,如果楼主还没搞定的话可以联系我,QQ;179865967
这里我贴出JS部分
function getHttpObject()
{
var http;
if(window.ActiveXObject)
{


http=new ActiveXObject( "MSXML2.XMLHTTP.3.0 ");
}
else if(window.XMLHttpRequest)
{
http=new XMLHttpRequest();
}
return http;
}

var xmlhttp=getHttpObject();

function callBack()
{

if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
var hellostr=xmlhttp.responseText;
var res=document.getElementById( "result ");

if(hellostr.substring(0,4)== "true ")

res.style.display= "inline ";

else
// alert( '恭喜!该用户名未被使用! ');
res.style.display= "none ";
}
}
}
function getMsg()
{
var url= "checkUserName.aspx?username= "+document.getElementById( "tb_UserName ").value;
xmlhttp.open( "GET ",url,true);
xmlhttp.onreadystatechange=callBack;
xmlhttp.send(null);
}
[解决办法]
懒鸟有懒法
我的方法就是不用ajax,再打开个页面告诉用户这个用户名可用不可用
别扔砖头-_-~
[解决办法]
AJAX XMLHTTP
[解决办法]
fengxin159()
====================
是的 从数据库中读出username= "所填username "放入dt中,如果dt.rows.count> 0,则return true, 否则return false
[解决办法]
xmlhttp
[解决办法]
xmlhttp 回调机制 ajax
[解决办法]
ajax
up
[解决办法]
觉得最简单的方法
ajax
[解决办法]
请教EricGuzuqiang,xywhnh两位大侠,你们的方法确实都可以,但我有个问题

var Text1 = document.getElementById( "Text1 ");
var url = "chkuser.aspx?User= " + Text1.value;
xmlHttp.open( "GET ",url,true);

这个地方,能不能不传递到chkuser.aspx页面(因为假如我有10个校验,那么就需要10个aspx页面,或者在一个里写10个case)。这个地方能用别的替换吗,比如一个cs文件

另外建议楼主不要用ajax库,自己手写最好。
[解决办法]
这里用的是xmlHttp, 获取chkuser.aspx的返回信息

如果有10个的话,你可以在chkuser.aspx.cs中response.write()每一个的信息,然后在当前文件中对返回的信息进行分析
呵呵这只是我的一个想法

[解决办法]
学习一下,争取年内掌握AJAX.
[解决办法]
EricGuzuqiang()
=======================
老大,你回个话呀!我这个没反应啊,不提示用户注不注册
[解决办法]
回了呀 兄弟

string _sqlconn = ".............. ";
string _sqlcomm = "select * from [tblUser] where username= ' "+username+ " ' ";
DataTable dt;
SqlConnection _sqlconnection = new SqlConnection(_sqlconn);
SqlDataAdapter _sqlda = new SqlDataAdapter(_sqlcomm, _sqlconnection);
_sqlda.SelectCommand.CommandType = cmdtype;
_sqlda.Fill(dt);
if(dt.Rows.count> 0)
return true;
else
return false;


[解决办法]
这里用的是xmlHttp, 获取chkuser.aspx的返回信息 



如果有10个的话,你可以在chkuser.aspx.cs中response.write()每一个的信息,然后在当前文件中对返回的信息进行分析
呵呵这只是我的一个想法 

=========================================================================================

这样是没错,目前我也是这样做的。可总觉得,传递到一个页面,启动这个页面的page_load方法,怪怪的,
在效率上启动一个页面也会有很多开销。不知道还有没有别的方法
[解决办法]
长见视中
[解决办法]
可以实现,我现在做的项目就是ajax2.0+vb.net 已经实现了。。
ajax视频教程里就有。

热点排行