AJAX异步请求难题(IE下不行)高手进

luckywlm 2013-01-01 08:18:16
小弟刚学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。



请求高手解答,小弟不胜感激!!最好两个都帮解答出来,多谢了!!!

...全文
318 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
memory_qian 2013-01-02
  • 打赏
  • 举报
回复
添加断点调试,看看是哪里出了问题。
rayaspnet 2013-01-02
  • 打赏
  • 举报
回复
引用 5 楼 luckywlm 的回复:
var txtUser = gel("User"); var txtPwd = gel("Pwd"); if (validateInput(txtUser, txtPwd))
gel 和 validateInput 代码在那里?你检查了吗
luckywlm 2013-01-01
  • 打赏
  • 举报
回复
用IE浏览器在服务器无法调,显示值不存在 我服务器的代码是: if (!string.IsNullOrEmpty(Request.Form["isPostback"])) { string strUname = Request.Form["txtName"]; string strPwd = Request.Form["txtPwd"]; if (strUname == "wlm" && strPwd == "123") { Response.Write("{'status':'2'}"); } else { Response.Write("{'status':'1'}"); } Response.End(); } }
rayaspnet 2013-01-01
  • 打赏
  • 举报
回复
引用 楼主 luckywlm 的回复:
var txtUser = gel("User"); var txtPwd = gel("Pwd"); if (validateInput(txtUser, txtPwd))
ajax部分份代码, 没有看出问题. 你再仔细检查一下validateInput/gel 2个函数 以及: alert("isPostback=1&txtName=" + txtUser.value + "&txtPwd=" + txtPwd.value); 另外在服务器端设断点, 看有没有调用
luckywlm 2013-01-01
  • 打赏
  • 举报
回复
跪求高手解答
luckywlm 2013-01-01
  • 打赏
  • 举报
回复
引用 1 楼 yezhenhua101 的回复:
你传回的是json对象,要这样写 $.ajax({ type: "POST", dataType: "json",//返回json格式的数据加这个
还是不行呀这样的话连谷歌浏览器都不能识别了
一一一一 2013-01-01
  • 打赏
  • 举报
回复
你传回的是json对象,要这样写 $.ajax({ type: "POST", dataType: "json",//返回json格式的数据加这个

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧