Ajax------一个标签引发的血案
Ajax------一个标签引发的血案
这几天写的一个页面,用到ajax,遇到了一些问题,感觉无比的纠结啊...但一切解决之后,感觉清爽不少啊。
1、Ajax+Form 提交方式的问题
起初,我的form是如下写的:
<form>
..........
<input type='button' value='登录' onclick='postlogin()'>
</form>
点击按钮,执行下面函数
function postlogin()
{
var userinfo;
userinfo='username='+document.getElementById('username').value;
userinfo+='&password='+document.getElementById('password').value;
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("POST",'a.jsp?mode=login&inajax=1',true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(userinfo);
}
结果发现AJAX提交的时候不是已post方式提交,总是已get方式提交。解决方法是在前面form上加上method=‘post’即可。
(而在我另外一个界面中,form中没添加却可以正常以post提交...晕啊)
2.接收到xml数据之后,经过处理,xml内容会直接显示在页面上(就像浏览器把返回的xml信息当作html处理一样,页面全部刷新,把内容解析到了界面上)
这个问题是最蛋疼的,搞的我很郁闷啊...但以前写的不会出现这种问题啊....于是和以前的仔细比较,一点点的查,才发现是最后提交按钮的原因
原来的提交按钮是<input type='button' .....>,而我为了给按钮加上个图片,我将其type改成了image,这就导致了上面所说的问题。至于具体什么原因恐怕要涉及到AJAX具体的内部原理了。