黑马程序员技术交流社区

标题: 这个ajax写了半天了。就是错。调试了一下午外加一晚上了.... [打印本页]

作者: 赵宇    时间: 2012-9-24 22:45
标题: 这个ajax写了半天了。就是错。调试了一下午外加一晚上了....
本帖最后由 赵宇 于 2012-9-25 08:33 编辑

只有这样输出才能显示ddd  加上if (XmlHttpRequest.readyState == 4 && XmlHttpRequest.status == 200) { 不好使啊

ddd.jpg (54.83 KB, 下载次数: 20)

ddd.jpg

作者: 尤圣回    时间: 2012-9-24 22:50
贵在坚持 改出来了 以后就不会出错了
作者: 杜正华    时间: 2012-9-24 23:18
if (XmlHttpRequest.readyState == 4 && XmlHttpRequest.status == 200) 那就是XmlHttpRequest.readyState == 4  此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。值为4表示数据解析完毕,可以通过XMLHttpRequest对象的相应属性取得数据。

XmlHttpRequest.status == 200 表示 - OK 一切正常,对GET和POST请求的应答文档跟在后面。

百度了一下,ajax还是不太懂啊。。。
作者: 明光照    时间: 2012-9-24 23:45
查一下帮助文档,看一下。
status

返回当前请求的http状态码

备注

长整形,此属性只读,返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取。


readyState

返回XMLHTTP请求的当前状态

4表示 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

建议你分两个if来写。
或者把XmlHttpRequest.status == 200放在前面。因为&&是当前面的条件不满足的时候便认定整个表达示为false.这样当然就会出错
作者: 秦敖    时间: 2012-10-19 13:51
本帖最后由 秦敖 于 2012-10-19 13:52 编辑

ajax代码大致可以分成以下几步完成:(1)创建xmlhttp对象。(2)设置访问参数。(3)绑定状态监听函数。(4)发送请求。
<script type="text/javascript">
var xmlhttp=CreateXmlHttp();//创建xmlhttp对象
var url="test.ashx?m="+Math.random();
xmlhttp.open("POST",url,false);//设置访问参数
xmlhttp.onreadystatechange=StateChange;//绑定状态监听函数
xmlhttp.send();//发送请求
//以下是xmlhttp对象创建函数,在里面可以扩展非IE的创建。
function CreateXmlHttp(){
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//IE创建方式。
if(xmlhttp){
  return xmlhttp;
}
else{
  alert("ajax对象创建失败");
}
}
//以下是状态监听函数。readyState代表和服务器通讯状态。
//1:开始发送。2:发送完成。3:读取响应。4:读取完成。
//Status代表服务器端返回的状态代码。200代表读取成功。
//readyState是和服务端通讯状态(读取进行到哪一步),Status是读取完成后
//服务器端返回的状态,所以Status必须在readyState==4也就是读取完成
//之后来获取。所以(xmlhttp.readyState==4&&xmlhttp.Status==200)这
//种写法是没道理的。
function StateChange(){
if(xmlhttp.readyState==4){
  if(xmlhttp.Status==200){
   alert(xmlhttp.responseText);
  }
  else{
   alert("服务端读取错误!");
  }
}
}
</script>




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2