<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------ 引用 7 楼 coolsunfeng 的回复: 我上传了一个关于Ajax用户名验证的,可以下看看。。。 给个地址,谢谢。 ------Solutions------ 参考,以前写的,代码可能有点乱 ajax检测用户名是否存在 更多ajax示例代码下载 ------Solutions------ 引用 9 楼 showbo 的回复: 参考,以前写的,代码可能有点乱 ajax检测用户名是否存在 更多ajax示例代码下载 谢谢,在列子的启发下,搞定了这问题。