open,get,post,send分别是什么意思?

open,get,post,send分别是什么意思?

XHR.open(method,url,boolean)  open方法是向服务器发起请求,具体是什么意思,get和post是两种不同的获取方法?get获取简单的字符串之类的,post获取比较复杂的?

onreadystatechange是代表在请求的不同进程中,当状态值发生改变时(0,1,2,3,4)执行相应的代码?

XHR.send()这个方法又是什么意思?将提交的内容发送给服务器的意思吗?比如将一个表单提交,整个请求响应的步骤是怎么样的,有点不理解。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
慕慕3263797 2018-04-16 19:27:19

 当ajax为异步请求时,浏览器会利用区别于(javascript与UI共享的)主线程的另外一条线程去执行这个请求发送,不影响主线程的执行,此时浏览器的针对这段代码的工作就不局限于一条线程。而当请求响应完成后,就会将回调函数推到浏览器工作中的回调队列里去,等待调用栈为空(调用栈为空的时候)的时候才去执行对应的回调函数,这种工作原理也称为事件轮询。因此,上面代码在异步的情况下,代码的运行结果应该是1 2 3 4。所以不管后面有for循环,还是其他,都会先执行完,然后触发回调事件。


怎么都被占用了呢 2018-04-16 10:58:56

无论send写在onreadystatechange的前面还是后面,在send方法后面打印readystate值的话,一直就是1,因为readystate的几种状态是:

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

send执行之后,才会变为2。

由于默认异步方式执行,会一边发送请求,一边继续向下执行console.log。所以会先打印出readystate为1的值。readystate的值变化时,会触发onreadystatechange事件,所以在里面会成功打印出2,3,4。

提交表单时,数据可以通过传参的形式传递。



  • 提问者 qq__9987 #1
    意思是,如果是异步的话,send后面的代码必须执行完毕,才会执行onreadystatechange中的代码么?之前我的理解以为是:先执行send后面的部分代码,等到一定时间请求完成后,才执行请求中的代码,然后继续执行send后面未执行的代码。
    2018-04-16 16:56:31
  • 提问者 qq__9987 #2
    因为我在send后面循环输出readyState都会是1;
    2018-04-16 16:58:01
怎么都被占用了呢 2018-04-15 16:50:29

XHR.open(method,url,boolean)是创建请求,send()方法发送请求。

get和post是2种方式区别:在传送参数上,get方式有长度限制,post没有,而且有加密信息的话,一般此使用post方式。在做数据查询时,建议用get方式;而在做数据添加、修改或删除时,建议用post方式。

onreadyStateChange事件是在readyState属性发生改变时触发的,readyState的值表示了当前请求的状态,在事件处理程序中可以根据这个值来进行不同的处理。

ajax提交表单:点击提交的时候,先创建请求,然后发送请求,并将从表单中获取到的数据作为参数传送到服务器,服务器做出响应后,可在onreadyStateChange方法中,查看响应结果。



  • 提问者 qq__9987 #1
    我发现如果把send()写在onreadystatechange之前的话,你在send方法后面打印readystate值的话,会一直显示的是1,而不会变为2,而在后面的onreadystatechange中输出就会成功变成2,这是什么原因?
    2018-04-15 18:28:26
  • 提问者 qq__9987 #2
    还有提交表单的时候,是怎么把值传递给服务器,是通过send吗
    2018-04-15 18:29:30
  • 提问者 qq__9987 #3
    调用send方法之后,为什么只有将send之后的代码执行完毕之后,xhr的readyState值才会变为2.
    2018-04-15 20:26:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师