ajax异步请求出错,火狐不兼容问题,求高手解答
关注:260 答案:2 信息版本:手机版
解决时间 2019-01-15 09:27
暗中人
2019-01-14 10:51
先看代码:
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof(XMLHttpRequest)!= 'undefined') {
xmlhttp = new XMLHttpRequest();
}
function Ajax(data){
xmlhttp.open("GET","http://127.0.0.1/register/user_ck.php?username="+data,true); //注意问题似乎从这里开始的
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send(null);
document.getElementById('end1').className = "show1";
document.getElementById('end1').innerHTML = process_request;//显示状态
xmlhttp.onreadystatechange=function(){
if (4==xmlhttp.readyState){
if (200==xmlhttp.status){
var responseText = xmlhttp.responseText;
if (responseText=="true" ){
ck_user("true");
}
else{
ck_user("false");
}
}else{
alert("发生错误111");
}
}
}
}
自我分析:xmlhttp.open("GET","http://127.0.0.1/register/user_ck.php?username="+data,true);应该是这句代码的问题 网上说这里的true代表的是异步请求!根据这个设置代码在ie下是正常的!但是在火狐下程序运行到if (4==xmlhttp.readyState){ if (200==xmlhttp.status)这里开始出现的问题 因为火狐直接运行alert("发生错误111");了这句代码!应该表示异步请求失败了吧?或者似乎是因为responseText返回的值是空!
那应该怎么处理火狐下的这个异步请求问题啊! 求救高手了 我都熬了一宿 也没弄明白
最佳答案
十年萤火照君眠
2019-01-14 11:12
根据楼主的描述,你在请求时弹出了.发生错误111 这就说明后台返回的状态码不是200.而你又说,在IE下该程序正常运行.
那就说明,文件是存在的,但是发生了错误.比如说500错误.
楼主检查一下后台文件是不是能正常运行.如果报错了,会有你这样的提示的.FF下可以在控制台查看返回的什么错误.
全部回答
1楼由着我着迷
2019-01-14 11:56
我们知道。。我们在接收数据的时候。都是都是一步一步进行的。这个动作完成之后,再进行下一个动作。就像我们html一样。我们是接收一行,执行一行。但是ajax它是异步的。
也就是说,他可以在这个地方不停下来等ajax返回数据,这时它可以在服务器处理我们的ajax请求时,仍然执行我们下面的内容。
我们在执行ajax请求的时候。可能还会执行其它的请求。或者操作。你不是同步就得到数据的。。
我要举报
如以上问答内容为色情/暴力/低俗/不良/侵权等信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看