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

注册页面Ajax检查用户名重复,该如何解决

2012-03-09 
注册页面Ajax检查用户名重复注册页面Ajax检查用户名重复IE现在60行报错:null为空或不是对象上代码:HTML

注册页面Ajax检查用户名重复
注册页面Ajax检查用户名重复

IE现在60行报错:'null'为空或不是对象

上代码:

HTML code
    <script type="text/javascript">        var xmlHttp;        function createXMLHTTP()        {            if(window.ActiveXObject)            {                var browseVersion=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];                for(var i=0;i<browseVersion.length;i++)                {                    xmlHttp=new ActiveXObject(browseVersion[i]);                }               }            else if(window.XMLHttpRequest)            {                xmlHttp=new XMLHttpRequest();            }            if (!xmlHttp)            {                window.alert("不能创建XMLHttpRequest对象实例!");                return false;            }        }        function $(id)        {            return document.getElementById(id);        }        function CheckUserName(obj,Msg)        {                   if(obj.value=="")            {                alert( "请输入用户名!")            }            else            {                 createXMLHTTP();                var url="chkuser.php?name=" + encodeURIComponent(obj.value);                xmlHttp.open("GET",url,true);                xmlHttp.onreadystatechange=IsExistUserName;                xmlHttp.send(null);            }        }        function IsExistUserName()        {            if(xmlHttp.readyState == 4)  /*这是60行*/            {                var isValid = xmlHttp.responseText;                var exsits = document.getElementById("exsits");                 exsits.innerHTML = isValid.substring(0,4);            }          }    </script>    <table width="400" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#666666">  <tr>    <td colspan="2" align="center" bgcolor="#666666" class="STYLE1">增加新用户</td>  </tr>    <tr>    <td width="150" align="right" bgcolor="#FFFFFF">用户名:</td>    <td width="250" bgcolor="#FFFFFF"><input name="wyx_name" type="text" size="17" onblur="CheckUserName(this,'msg')"/>     <font color=red>*</font><label d="exsits"></label></td>    </tr>  <tr>    <td width="150" align="right" bgcolor="#FFFFFF">密码:</td>    <td width="250" bgcolor="#FFFFFF">    <input name="wyx_pass1" type="password" size="18"/> <font color=red>*</font></td>  </tr>  <tr>    <td width="150" align="right" bgcolor="#FFFFFF">重复密码:</td>    <td width="250" bgcolor="#FFFFFF">    <input name="wyx_pass2" type="password" size="18"/> <font color=red>*</font></td>  </tr>  <tr>    <td colspan="2" align="center" bgcolor="#FFFFFF"><input type="submit" name="submit" value="提交" /></td>  </tr></table>


这是chkuser.php页面代码:

PHP code
<?phpinclude('chek.php');include('../config.php');$name = $_GET[name];$sql="SELECT * FROM wyx_user WHERE wyx_name='$name'";$sql=@mysql_query($sql)if($rs=mysql_fetch_array($sql)){    echo "用户名已存在";}else{    echo "可以注册";}?>


------解决方案--------------------


xml.Http没有注册,
createXMLHTTP();这句改为var xml.Http= createXMLHTTP();

[解决办法]
IsExistUserName并未返回任何变量
xmlHttp.onreadystatechange=IsExistUserName是什么意思?
问题应该处在这里,不要用等号带入。
[解决办法]
if(xmlHttp.readyState == 400)  /*这是60行*/

[解决办法]
不好意思,看错了。
xml.Http注册了,这个 function CheckUserName(obj,Msg)Msg参数,没看到有什么作用啊。
function CheckUserName(obj,Msg)
{

if(obj.value=="")
{
alert( "请输入用户名!")
}
else

createXMLHTTP();
var url="chkuser.php?name=" + encodeURIComponent(obj.value);
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=IsExistUserName;
xmlHttp.send(null);
}
}
function IsExistUserName()
{
if(xmlHttp.readyState == 4)  /*这是60行*/
{
var isValid = xmlHttp.responseText;
var exsits = document.getElementById("exsits"); 
exsits.innerHTML = isValid.substring(0,4);

}
改成function CheckUserName(obj,Msg)
{

if(obj.value=="")
{
alert( "请输入用户名!")
}
else

createXMLHTTP();
var url="chkuser.php?name=" + encodeURIComponent(obj.value);
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=function (){
if (xml.Http.readyState == 4 && xml.Http.status==200) {
IsExistUserName(xml.Http.responseText);
}
}
xmlHttp.send(null);
}
}
function IsExistUserName()
{

var isValid = xmlHttp.responseText;
var exsits = document.getElementById("exsits"); 
exsits.innerHTML = isValid.substring(0,4);
}

[解决办法]
1楼的,xmlHttp是全局变量
2楼的,这里没有问题

encodeURIComponent()返回的是utf8格式的字符串,而你的chkuser.php是gb的,
$name = $_GET[name];这里应coniv一下
[解决办法]
看不出什么问题

[解决办法]
不跨域,就用JQUERY嘛,我一直用.好用啊~ .
[解决办法]
用jquery把 哈哈
[解决办法]
var xmlHttp;
改为
var xmlHttp = createXMLHTTP();
[解决办法]
<label d="exsits"></label>
这句有问题,之后是写不进去的。
exsits.innerHTML = isValid.substring(0,4);


[解决办法]
注意!你在其他function中确实注册过xmlHttp,但这是在函数内部注册的,只能作为局部变量,并不能作用为全局变量。
你在IsExistUserName()这个function中并没有注册过xmlHttp。

正确的做法应该是在所有函数的外部调用下createXMLHTTP()方法。

JScript code
<script type="text/javascript">          function createXMLHTTP()        {            if(window.ActiveXObject)            {                var browseVersion=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];                for(var i=0;i<browseVersion.length;i++)                {                    xmlHttp=new ActiveXObject(browseVersion[i]);                }               }            else if(window.XMLHttpRequest)            {                xmlHttp=new XMLHttpRequest();            }            if (!xmlHttp)            {                window.alert("不能创建XMLHttpRequest对象实例!");                return false;            }        }        var xmlHttp = createXMLHTTP();        function $(id)        {            return document.getElementById(id);        }        function CheckUserName(obj,Msg)        {                   if(obj.value=="")            {                alert( "请输入用户名!")            }            else            {                 createXMLHTTP();                var url="chkuser.php?name=" + encodeURIComponent(obj.value);                xmlHttp.open("GET",url,true);                xmlHttp.onreadystatechange=IsExistUserName;                xmlHttp.send(null);            }        }        function IsExistUserName()        {            if(xmlHttp.readyState == 4)  /*这是60行*/            {                var isValid = xmlHttp.responseText;                var exsits = document.getElementById("exsits");                 exsits.innerHTML = isValid.substring(0,4);            }          }    </script> 


[解决办法]
好像还有点问题,createXMLHTTP()方法最后需要return xmlhttp;一下。
[解决办法]
用ff的firebug调试下看看。。。有可能是你哪里写错了。
[解决办法]
我这里报错是这句:
xmlHttp=new ActiveXObject(browseVersion[i]);
错误: Automation 服务器不能创建对象

用 try 吧:

JScript code
function createXMLHTTP(){    try    {        xmlHttp    = new ActiveXObject("Msxml2.XMLHTTP");    }    catch(e)    {        try        {            xmlHttp    = new ActiveXObject("Microsoft.XMLHTTP");        }        catch(oc)        {            xmlHttp    = null;        }    }    if(!xmlHttp && typeof XMLHttpRequest != "undefined")    {        xmlHttp    = new XMLHttpRequest();    }    if (!xmlHttp)    {        window.alert("不能创建XMLHttpRequest对象实例!");        return false;    }}
[解决办法]
学习

jf

热点排行