onclick与onblur有什么区别吗?
本帖最后由 xilaianzxsc 于 2013-10-19 09:24:40 编辑
login.asp中:
<input
onBlur="login_onblur()" name="yhid" type="text" id="yhid" size="30" />
<input type="submit" name="button1" id="button1" value="提交" />
//程序中,上面一句命令中调用函数时,运行一切正常.
如果将上述二行命令改成如下:
<input name="yhid" type="text" id="yhid" size="30" />
<input
onClick="login_onblur()" type="submit" name="button1" id="button1" value="提交" />
//运行结果是:页面只是自动刷新一下,无任何反应.
//问题点:同样是相同的函数,为何在onBlur中,能正确运行,而在onClick时,却不能正确运行?
function
login_onblur()
{
var yhid=document.getElementById("yhid").value;
var url="cheshi.asp?usercode="+yhid;
request.open("GET",url,true);
request.onreadystatechange=
updatepage;
request.send(null);
}
function
updatepage()
{
if (request.readyState == 4 && request.status==200)
{
var response=request.responseText;
document.getElementById("gysname").value = response
}
cheshi.asp中如下:
<%
sql = "select * FROM vendor_username where ...." //此处省略
conn = Server.CreateObject("ADODB.Connection")
rs = Server.CreateObject("ADODB.Recordset")
conn.ConnectionString = ........此处先省略
conn.Open() //连接数据库
rs.ActiveConnection = conn
rs.CursorType = 1 //设置游标类型
rs.LockType = 1 //设置锁定状态
rs.Open(sql) // 打开记录集.
Response.Clear
Response.Charset="gb2312"
Response.Write(rs("cvenname"));
Response.End;
%>
------解决方案--------------------仔细检查一下代码,获得将input的type属性改为button试一下,之前我也遇见过同样的问题。
------解决方案--------------------function updatepage()
{
if (request.readyState == 4 && request.status==200)
{
var response=request.responseText;
alert(1); //此行在onblur时响应,在onclick时不响应
alert(request.responseText);////此行在onblur时响应,在onclick时不响应
document.getElementById("gysname").value = response
}
else{
alert([request.readyState,request.status]);
}
很好!!你已经初步定位问题了 在继续 调试
你要知道 当你写了 if得时候那么说明 还有种相反的else的情况 你要调试证明 没有进else
如果进了 那么 问题就 出来了
如果进了 else 说明 (request.readyState == 4 && request.status==200) 条件不成立 说明 后台页面没有正常返回
那么 这个时候 我一般会看equest.status 看他得输出值 这个状态码 会说明服务器 发生了什么类型的问题
还有我会在浏览器种 直接 查看 var url="cheshi.asp?usercode="+yhid;
直接在地址栏种 输入 这个 url(注意填写完整的域名等相对位置)
你就可以 直接 修改后台页面的输出进行调试了