AJAX异步请求难题(IE下不行)高手进
小弟刚学AJAX,对这个确实是一窍不通。
我用JS的异步编程代码是:
function vertiy() {
xmlhttp = false;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
var activexName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++) {
try {
xmlhttp = new ActiveXObject(activexName[i])
break;
} catch (e) {
}
}
}
if (!xmlhttp) {
alert("XMLhttpRequest对象创建失败")
return;
}
else {
return xmlhttp;
}
}
<script type="text/javascript">
window.onload = function () {
gel("btnLogin").onclick = Login;
xhr = createXmlHttp();
}
var xhr = false;
function Login() {
var txtUser = gel("User");
var txtPwd = gel("Pwd");
if (validateInput(txtUser, txtPwd)) {
xhr.open("post", "Default2.aspx", true);
xhr.setRequestHeader("If-Modified-Since", "0");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var res = xhr.responseText;
var json = eval("(" + res + ")");
//alert(json.status);
switch (json.status) {
case "1":
alert("用户名或密码错误,请重新填写!");
break;
case "2":
alert("登录成功!!");
window.location = "index.htm";
break;
default:
alert("未知错误~~~请稍后再试!")
}
}
}
}
xhr.send("isPostback=1&txtName=" + txtUser.value + "&txtPwd=" + txtPwd.value);
}
}
在谷歌、opera、IE6上都没问题,我是用ietest测试的,在IE7、IE8、IE9上请求无反应,
我自己的IE浏览器是IE9。
下面是就Jquery版的
<script src="JS/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
gel("btnLogin").onclick = Login2;
//xhr = createXmlHttp();
}
function Login2() {
var txtUser = gel("User");
var txtPwd = gel("Pwd");
if (validateInput(txtUser, txtPwd)) {
$.ajax({
type: "POST",
url: "Default2.aspx",
data: "isPostback=1&txtName=" + txtUser.value + "&txtPwd=" + txtPwd.value,
success: function (msg) {
var json = eval("(" + msg + ")");
//alert(json);
switch (json.status) {
case "1":
alert("用户名或密码错误,请重新填写!");
break;
case "2":
alert("登录成功!!");
window.location = "index.htm";
break;
default:
alert("未知错误~~~请稍后再试!")
}
}
});
}
}
这个在谷歌、opera上都没有问题,就是在IE上请求不起,不管用哪种版本都不行,我是用ietest测试的,
我的IE浏览器是IE9。
请求高手解答,小弟不胜感激!!最好两个都帮解答出来,多谢了!!!