XML、XMLDOM、XMLHttpRequest 详解(二)

‘MSXML2.XMLHttp.6.0’,

‘MSXML2.XMLHttp.3.0’,

‘MSXML2.XMLHttp’

];

for (var i = 0; i < versions.length; i ++) {

try {

return new ActiveXObject(version[i]);

} catch (e) {

//跳过

}

}

} else {

throw new Error(‘您的浏览器不支持XHR对象!’);

}

}

var xhr = new createXHR();

XHR 使用

======

在使用 XHR 对象时,先必须调用 open() 方法,它接受三个参数,要发送的请求类型(get、post)、请求的URL和表示是否异步。

// 使用同步方式(false代表同步)

var xhr = new XMLHttpRequest();

alet(xhr); //XMLHttpRequest

xhr.open(‘get’,‘demo.php’,false); //准备发送请求,以get方式请求

xhr.send(null);

open() 方法并不会真正发送请求,而只是启动一个请求以备发送。通过 send() 方法进行发送请求,send() 方法接受一个参数,作为请求主体发送的数据。如果不需要则,必须填 null。

执行 send() 发送之后,请求就会发送到服务器上。

当请求发送到服务器端,收到响应后,响应的数据会自动填充XHR对象的属性。XHR一共有四个属性:

| 属性 | 描述 |

| — | — |

| responseText | 作为响应主体被返回的文本 |

| responeXML | 如果响应主题内容类型是”text/xml”或”application/xml”,则返回包含 响应数据的XMLDOM文档 |

| status | 响应的HTTP状态 |

| statusText | HTTP状态的说明 |

接收响应之后,第一步检查 status 属性,以确定响应已经成功返回。一般而以 HTTP 状态代码为 200 作为成功的标志。除了成功的状态代码,还有一些别的:

| HTTP状态码 | 状态字符串 | 说明 |

| — | — | — |

| 200 | OK | 服务器成功返回了页面 |

| 400 | Bad Request | 语法错误导致服务器不识别 |

| 401 | Unauthorized | 请求需要用户认证 |

| 404 | Not found | 指定的URL在服务器上找不到 |

| 500 | Internal Server Error | 服务器遇到意外错误,无法完成请求 |

| 505 | ServiceUnavailable | 由于服务器过载或维护导致无法完成请求 |

alert(xhr.responseText); // 打印服务器端返回回来的数据

使用异步调用才是我们真正常用的手段,使用异步调用的时候,需要出发readystatechange 事件,然后检测 readyState 属性即可。

//使用异步方式

var xhr = new XMLHttpRequest();

xhr.open(‘get’, ‘demo.php?rand=’ + Math.random(), true); //准备发送请求,以get方式请求

xhr.send(null);

xhr.onreadystatechange = function(){

if(xhr.readyState === 4 && xhr.status === 200){

alert(xhr.responseText);

}else{

alert(‘数据返回失败!状态代码:’ + xhr.status + ‘状态信息:’ + xhr.statusText);

}

}

使用 abort() 方法可以取消异步请求,放在 send() 方法之前会报错。放在 responseText 之前会得到一个空值。

// 使用getResponseHeader()获取单个响应头信息

alert(xhr.getResponseHeader(‘Context-Type’));

// 使用getAllResponseHeaders()获取整个响应头信息

alert(xhr.getAllResponseHeaders());

// 使用setRequestHeader()设置单个请求头信息

xhr.setRequestHeader(‘MyHeader’,‘Yu’); //放在open方法之后,send方法之前

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 30
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值