<script type="text/javascript">
var xmlhttp;
function getXMLHTTPObj() {
if (window.XMLHttpRequest) {
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch(e){
}
}
}
//确认XMLHTtpRequest对象创建成功
if (!xmlhttp) {
alert("XMLHttpRequest对象创建失败!!");
return;
} else {
//alert("ok");
}
}
function callback() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var usernames = xmlHttp.responseText;
var arrUserName = usernames.split(";");
var bFlag = false;
for (i=0;i<arrUserName.length;i++)
{
if (arrUserName[i]==showLogin.username.value)
{
bFlag = true;
break;
}
}
var node = document.getElementById("myDiv");
if (bFlag)
{
node.firstChild.nodeValue = "用户名已经存在";
showLogin.submitButton.disabled = true;
}
else
{
node.firstChild.nodeValue = "用户名不存在,可以使用";
showLogin.submitButton.disabled = false;
}
}
}
}
function verify()
{
//创建XMLHttpRequest对象
creatXMLHTTP();
if (xmlHttp!=null)
{
//创建响应XMLHttpRequest对象状态变化的函数
xmlHttp.onreadystatechange = callback;
//创建HTTP请求
xmlHttp.open("get","conn.asp?",true);
//发送HTTP请求
xmlHttp.send(null);
}
else
{
alert("您的浏览器不支持XMLHTTP,请更换浏览器后再进行注册。");
}
}
</script>
html:
<input type="text" name="username" id="username" style="width: 200px" maxLength="20" value=""><span id="myDiv"> </span>
....
<input name="submitButton" type="submit"value="Searching.." align="middle"width="100" onBlur="verify()" disabled="disabled" >
....
------Solutions------
function callback() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { var usernames = xmlHttp.responseText; alert(xmlHttp.responseText); //看看有没有返回值,对不对 var arrUserName = usernames.split(";"); var bFlag = false; for (i = 0; i < arrUserName.length; i++) { if (arrUserName[i] == showLogin.username.value) { bFlag = true; break; } } } } }
------Solutions------
LZ 这个可大意多了,检查验证了好久最后发现,如一些代码 写错别字,JS大小写敏感不注意,引用错函数 .....这些基本的是写代码 最最注意的 ,要出出错找烦了还不知道怎么回事。。。。修改如下:(后面HTML部分修改了点,见verify()应用)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>TEST</title>
</head>
<style type="text/css">
body,td,div{font-size:14px; font-weight:bold;font-family:arial;color:#333333;}
</style>
<script language="javascript" type="text/javascript">
var xmlhttp ;
function getXMLHTTPObj () {
if(window.ActiveXObject){
var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
xmlhttp = new ActiveXObject(activexName[i]);
}catch(e){
continue;
}
if(xmlhttp) break;
}
}else{
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if(xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
}
//确认XMLHTtpRequest对象创建成功
if (!xmlhttp) {
alert("XMLHttpRequest对象创建失败!!");
return;
}else {
//alert("ok");
}
}
function callback(){
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var usernames = xmlhttp.responseText;
var arrUserName = usernames.split(";");
var bFlag = false;
for (i=0;i<arrUserName.length;i++){
if (arrUserName[i]==showLogin.username.value){
bFlag = true;
break;
}
}
var node = document.getElementById("myDiv");
if (bFlag){
node.firstChild.nodeValue = "用户名已经存在";
showLogin.submitButton.disabled = true;
}else{
node.firstChild.nodeValue = "用户名不存在,可以使用";
showLogin.submitButton.disabled = false;
}
}
}
}
function verify(){
//创建XMLHttpRequest对象
getXMLHTTPObj();
if (xmlhttp!=null){
//创建响应XMLHttpRequest对象状态变化的函数
xmlhttp.onreadystatechange = callback;
//创建HTTP请求
xmlhttp.open("get","conn.asp?",true);
//发送HTTP请求
xmlhttp.send(null);
}else{
alert("您的浏览器不支持XMLHTTP,请更换浏览器后再进行注册。");
}
}
</script>
<body>
<input type="text" name="username" id="username" style="width: 200px" maxLength="20" onBlur="verify()" value=""><span id="myDiv"> </span>
<input name="submitButton" type="submit"value="Searching.." align="middle"width="100" disabled="disabled" >
</body>
</html>
------Solutions------
<input name="submitButton" type="submit"value="Searching.." align="middle"width="100" onBlur="verify()" disabled="disabled" >
你都把按钮disabled了,还怎么可能反应??
------Solutions------
2楼后面说的对,把onBlur拿到TEXT框里。至于程序,没看,只看到原来放事件的按钮被disabled是不能触发事件的。
------Solutions------
上面的指正都做了休改还是不行,我又做了些修改如下,XMLHTTP能建立了,但网页显示有错误,不知哪里有错,帮忙再看看。
<script type="text/javascript">
var xmlhttp;
function getXMLHTTPObj() {
if (window.XMLHttpRequest) {
//针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对某些特定版本的mozillar浏览器的BUG进行修正
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch(e){
}
}
}
if (!xmlhttp) {
alert("XMLHttpRequest对象创建失败!!");
return;
} else
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET","conn.asp?name="+ username,true);
xmlhttp.send(null);
}
function callback() {
if (xmlhttp.readyState == 4) {
//判断http的交互是否成功
if (xmlhttp.status == 200) {
var usernames = xmlHttp.responseText;
var arrUserName = usernames.split(";");
//定义一个变量,用于判断用户名是否已经存在
var bFlag = false;
for (i=0;i<arrUserName.length;i++)
{
if (arrUserName[i]==showLogin.username.value)
{
bFlag = true;
break;
}
}
//查找节点
var node = document.getElementById("myDiv");
//更新数据
if (bFlag)
{
node.firstChild.nodeValue = "用户名已经存在";
showLogin.submitButton.disabled = true;
}
else
{
node.firstChild.nodeValue = "用户名不存在,可以使用";
showLogin.submitButton.disabled = false;
}
}
}
}
function verify()
{
creatXMLHTTP();
if (xmlHttp!=null)
{
//创建响应XMLHttpRequest对象状态变化的函数
xmlHttp.onreadystatechange = callback;
//创建HTTP请求
xmlHttp.open("get","username.txt",true);
//发送HTTP请求
xmlHttp.send(null);
}
else
{
alert("您的浏览器不支持XMLHTTP,请更换浏览器后再进行注册。");
}
}
</script>
HTML:
<body>
<input type="text" name="username" id="username" style="width: 200px" maxLength="20" onBlur="verify()" value=""><span id="myDiv"> </span>
<input name="submitButton" type="submit"value="Searching.." align="middle"width="100" disabled="disabled" >
</body>
------Solutions------
请高手看看再次修改的AJAX段代码,已经知道有返回状态1,2,3,4 了,可能后面的CALLBACK函数里面有问题?我推测。
<script type="text/javascript">
var xmlhttp;
function verify() {
var username = document.getElementById("username").value;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activexName = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try{
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch(e){
}
}
}
if (!xmlhttp) {
alert("XMLHttpRequest对象创建失败!!");
return;
}
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET","conn.asp?username="+ username,true);
xmlhttp.send(null);
}
function callback() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var userNames = xmlHttp.responseText;
var arrUserName = userNames.split(";");
var bFlag = false;
for (i=0;i<arrUserName.length;i++)
{
if (arrUserName[i]==showLogin.username.value)
{
bFlag = true;
break;
}
}
//查找节点
var node = document.getElementById("myDiv");
//更新数据
if (bFlag)
{
node.firstChild.nodeValue = "用户名已经存在";
}
else
{
node.firstChild.nodeValue = "用户名不存在,可以使用";
}
}
}
}
</script>
------Solutions------
我上传了一个关于Ajax用户名验证的,可以下看看。。。
------Solutions------
给个地址,谢谢。
------Solutions------
参考,以前写的,代码可能有点乱
ajax检测用户名是否存在
更多ajax示例代码下载
------Solutions------
谢谢,在列子的启发下,搞定了这问题。