为了账号安全,请及时绑定邮箱和手机立即绑定

关于request. send()求助?

我在JavaScript  Dom 编程艺术(第二版)中看到request. send()是用在onreadystatechange函数后的,而这里的第四个视频中老师放在了前面。

求解?个人倾向于书中的用法,不是应该在处理了onreadystatechange 函数后再发送请求吗?

谢谢。

正在回答

5 回答

let xhr=new XMLHttpRequest();

xhr.open('get','http://httpbin/get',true);

xhr.setRequestHeader("Content-Type","applaction/x-www-form-urlencoded");

xhr.onreadystatechange=()={

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

.....

}

}

一般都是这个顺序的吧。我看其他的教学视频上说

0 回复 有任何疑惑可以回复我~

一般来说,放前放后是没有问题的,不过我也在另一本书《高级程序设计》中看到过,说是最好将onreadystatechange事件函数放在open()和send()之前,原因是为了保证跨浏览器兼容。具体有什么兼容问题,书中没说。

0 回复 有任何疑惑可以回复我~

open()和send()是客户端向服务器端请求阶段,statu是服务器响应给客户端的状态码(状态码有5种,200就代表服务器响应成功了)。onreadystatechange函数是没当readystate改变时都会触发一次,当readystate=4且statu=200时证明服务器响应成功了。readystate就是请求阶段就包含五个状态(0,1,2,3,4),而open()和send()就是在这几个状态之中的,然后onreadystatechange函数不用关心客户端是否已经完成,只要readystate=4,state=200就可以用responsetext/responseXML获取到服务器响应的数据就行了,所以open()和send()并不用放到onreadystatechange函数中去。这是我的个人理解,如有错误欢迎指出。

0 回复 有任何疑惑可以回复我~

send是异步执行的,可以放在前面,可以百度看下JavaScript的事件循环

0 回复 有任何疑惑可以回复我~

纠正问题: 是第二章第五个视频4分钟后。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Ajax全接触
  • 参与学习       224850    人
  • 解答问题       663    个

本课程通过一个案例,讲解Ajax的相关概念原理实现方式和应用

进入课程

关于request. send()求助?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信