注册页面Ajax检查用户名重复IE现在60行报错:'null'为空或不是对象上代码: <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
include('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 "可以注册";
}?>
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
include('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 "可以注册";
}?>
createXMLHTTP();这句改为var xml.Http= createXMLHTTP();
xmlHttp.onreadystatechange=IsExistUserName是什么意思?
问题应该处在这里,不要用等号带入。
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);
}
2楼的,这里没有问题encodeURIComponent()返回的是utf8格式的字符串,而你的chkuser.php是gb的,
$name = $_GET[name];这里应coniv一下
改为
var xmlHttp = createXMLHTTP();
这句有问题,之后是写不进去的。
exsits.innerHTML = isValid.substring(0,4);
你在IsExistUserName()这个function中并没有注册过xmlHttp。正确的做法应该是在所有函数的外部调用下createXMLHTTP()方法。<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>
xmlHttp=new ActiveXObject(browseVersion[i]);
错误: Automation 服务器不能创建对象用 try 吧:
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;
}
}
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;
}
return xmlHttp; }
function $(id)
{
return document.getElementById(id);
}
function CheckUserName(obj,Msg)
{
if(obj.value=="")
{
alert( "请输入用户名!")
}
else
{
xmlHttp= 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)
{
var isValid = xmlHttp.responseText;
var exsits = document.getElementById("exsits");
exsits.innerHTML = isValid.substring(0,4);
}
}
</script>
这样就行了。。