xmlhttp的onreadystatechange为什么在open和send前面

博主在学习Ajax请求时,阅读W3school官方文档发现,文档在发送请求和处理状态改变函数时,每次都将onreadystatechange写在open()和send()前面,对此产生疑惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题来源

最近在学习ajax请求,读到W3school官方文档对于    发送请求,和处理状态改变函数时,每次都把onreadystatechange 写在open()和send()前面,对此很疑惑!!如下图

链接:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp

解释

open()只是初始化,做好准备发送,
send()才是发送请求。
onreadystatechange是告诉xmlhttp当它的state发生改变的时候执行

readyState在生成xmlHttp时为0, 在 XMLHttpRequest.open时即改变,oepn会触发onreadystatechange事件的。
oepn放在onreadystatechange之前,会比放在onreadystatechange之后少执行一次onreadystatechange事件。
readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。

下面是 readyState 属性可能的值:

状态 描述 
0    请求未初始化(在调用 open() 之前) 
1    请求已提出(调用 send() 之前) 
2    请求已发送(这里通常可以从响应得到内容头部) 
3    请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应) 
4    请求已完成(可以访问服务器响应并使用它)

我们可以在onreadystatechange 函数中加一个if来判断请求是否成功,通过xmlHttp.responseText取得服务器返回的数据,如:
if( xmlHttp.readyState == 4  && xmlHttp.status == 200 )

通过上述可知,xmlhttp的onreadystatechange要放在send前面是为了给xmlHttp的readyState变化绑定一个监听事件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值