ajax异步缺少对象的问题
<%@LANGUAGE="VBSCRIPT" CodePage="936"%>
<!--#include file="../Include/const.asp" -->
<!--#include file="../Connections/conn.asp" -->
<!--#include file="../Include/function.asp" -->
<!--#include file="../Include/md5.asp" -->
<%
Response.ContentType = "text/html"
Response.Charset = "gb2312"
%>
<script language="javascript" src="/js/jsfunc.js"></script>
<script language="JavaScript">
function MemLogin()
{
var ML_Name=document.MemLoginForm.ML_Name.value;
var ML_Password=document.MemLoginForm.ML_Password.value;
var CheckCode=document.MemLoginForm.CheckCode.value;
if (ML_Name.len()==0) {
alert("请输入登录帐号!");
document.MemLoginForm.ML_Name.focus();
return false;
} else {
if (isValidStr(ML_Name)) {
alert("登录帐号中含有非法字符!");
document.MemLoginForm.ML_Name.focus();
return false;
}
}
if (ML_Password.len()==0) {
alert("请输入登录密码!");
document.MemLoginForm.ML_Password.focus();
return false;
}
<%if set_LoginYzmIsOpen=1 then%>
if (CheckCode.len()==0) {
alert("请输入验证码!");
document.MemLoginForm.CheckCode.focus();
return false;
}
<%end if%>
CheckInput(ML_Name+'$'+ML_Password+'$'+CheckCode,'/Include/CheckInput.asp','会员登录','MemLoginForm');
}
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
if CheckMemIsLogin(1,"","","","","","")=1 then
c_ML_ID=GetCookieValue(set_QtCD,"ML_ID")
c_ML_Name=GetCookieValue(set_QtCD,"ML_Name")
c_ML_LastLoginTime=GetCookieValue(set_QtCD,"ML_LastLoginTime")
c_ML_Points=GetCookieValue(set_QtCD,"ML_Points")
%>
<tr height="20">
<td width="32%" align="right">帐号:</td>
<td width="68%"><font color="#FF0000"><%=c_ML_Name%></font></td>
</tr>
<tr height="20">
<td width="32%" align="right">可用金币:</td>
<td width="68%"><%=c_ML_Points%> 个</td>
</tr>
<tr height="20">
<td width="32%" align="right">最近登录:</td>
<td width="68%"><%=c_ML_LastLoginTime%></td>
</tr>
<tr height="20">
<td align="center" colspan="2"><a href="/member/" class="z_link1">[会员中心]</a><a href="../logout.asp" class="z_link1">[注销帐号]</a></td>
</tr>
<%
else
%>
<form name="MemLoginForm" action="" method="post" onKeyPress="if(true==onEnterClick(event)) return MemLogin();">
<tr height="20">
<td width="27%" align="right">帐号:</td>
<td width="73%"><input type="text" name="ML_Name" size="15" style="border: 1px solid #CCCCCC; height: 20px; width: 120px"></td>
</tr>
<tr height="20">
<td width="27%" align="right">密码:</td>
<td width="73%"><input type="password" name="ML_Password" size="15" style="border: 1px solid #CCCCCC; height: 20px; width: 120px"></td>
</tr>
<%
if set_LoginYzmIsOpen=1 then
%>
<tr height="20">
<td width="27%" align="right">验证码:</td>
<td width="73%"><input type="text" name="CheckCode" size="15" style="border: 1px solid #CCCCCC; height: 20px; width: 60px"> <a href="javascript:refreshimg('../')" title="看不清楚,换个图片"><img id="chkcode" src="../Include/checkcode.asp" style="border: 1px solid #FFFFFF" align="absmiddle"></a></td>
</tr>
<%
end if
%>
<tr height="30">
<td colspan="2" align="center"><input type="button" value="登录" onClick="return MemLogin();"> <input type="button" value="注册" onClick="javascript: window.location='../reg.asp'"></td>
</tr>
</form>
<%
end if
%>
</table>
我把以上代码单独保存为一页,点击“登录”可以成功执行,应该也不是MemLogin()这个函数的问题。
可是,如果我把这个页用ajax异步在其它页面引用,就会报错“缺少对象”,但是我测试了一下,好像就是点击“登录”调用MemLogin()这个函数时出错。而且,我担心在异步调用时MemLogin()中会有冲突的代码,我把MemLogin()这个函数改成一个简单的alert("test"),依然报错。看来就是点击“登录”那一刹那的问题。请大伙帮忙解决一下。
<table width="201" border="0" cellspacing="0" cellpadding="0">
<tr>
<td background="/images/fenlei/bt_b4.gif" width="201" height="27" colspan="3"> <font class="z_fsize2"><b><font color="#cccccc">会员登录</font></b></font></td>
</tr>
<tr>
<td colspan="3" height="5"></td>
</tr>
<tr>
<td width="5"></td>
<td width="191" align="center" valign="top">
<div id="meminfo"></div>
<script language="JavaScript" type="text/javascript">startRequest("/IncFrm/Login_Frm.asp","meminfo");</script>
</td>
<td width="5"></td>
</tr>
<tr>
<td colspan="3" height="5"></td>
</tr>
</table>
我的异步处理代码是,这段代码我还用在读取新闻列表,运行正常,所以应该也不是异步处理代码的问题。
function startRequest(url,xsid){
xmlHttp = GetXMLHttp();
urls=url.split("?");
if (urls[1]=='' || typeof urls[1]=='undefined')
{
url=urls[0]+"?"; //test.asp?
}
else
{
url=urls[0]+"?"+urls[1]+"&"; //test.asp?test=1&
}
var n_url = url+"timestamp="+new Date().getTime();
//alert(n_url);
try{
xmlHttp.onreadystatechange = function(){handleStateChange(xsid);}
xmlHttp.open("GET", n_url, false);
xmlHttp.send(null);
}catch(exception){
alert(exception);
}
}
function handleStateChange(xsid){
document.getElementById(xsid).innerHTML = " <center>正在加载信息... </center>";
if(xmlHttp.readystate == 4){
if(xmlHttp.status == 200 || xmlHttp.status == 0){
alert(unescape(xmlHttp.responseText));
document.getElementById(xsid).innerHTML = unescape(xmlHttp.responseText);
}else{
document.getElementById(xsid).innerHTML = " <center>加载失败,请刷新重试。 </center>";
}
}
}