老师,请问下timout为什么不是在send之后呢

老师,请问下timout为什么不是在send之后呢

http://img1.sycdn.imooc.com//climg/5ac9c17e00018fe701960053.jpg应该是数据发送过去之后,如果两秒之内没响应,就报错啊

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

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

3回答
卡布琦诺 2018-04-09 12:57:43

1、设置请求头命令:

使用setRequestHeader,单独指定请求的某个http头

原因: 通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件, 告诉服务器客户端要下载什么信息以及相关的参数,即设置响应头(使用setRequestHeader),setRequestHeader方法只是XMLHTTP为添加或修改HTTP头提供的一个接口方法而已

2、xhr.send(name="123")是向服务器端发送请求,可以结合下面的例子理解一下

//创建异步对象  
var xhr = new XMLHttpRequest();
//设置请求的类型及url
//post请求一定要添加请求头才行不然会报错
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xhr.open('post', 'php01.post.php' );
//发送请求
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
    // 这步为判断服务器是否正确响应
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  } 
};

希望可以帮到你~

  • 提问者 慕粉3125272 #1
    老师,我的意思是自定义头请求,自定义字段和里面的值
    2018-04-09 14:00:02
  • 提问者 慕粉3125272 #2
    老师,我的意思是自定义头请求,自定义字段和里面的值
    2018-04-09 14:00:23
  • 卡布琦诺 回复 提问者 慕粉3125272 #3
    你指的是"Content-type","application/x-www-form-urlencoded"么?建议你详细描述一下哦
    2018-04-09 14:14:35
卡布琦诺 2018-04-08 19:10:37

标准规定,timeout超时在IE中需要写在open()方法后、send()方法前设置,老师这里写在send()方法前面,可以理解为兼容IE浏览器,希望可以帮到你~

  • 提问者 慕粉3125272 #1
    这里的实验就是说,我这边最多等待两秒,等待服务端的响应,但是服务端那边设置三秒才响应,所以会超时并报错。是不是这个意思,老师
    2018-04-09 09:15:22
  • 提问者 慕粉3125272 #2
    老师,请问下数据是保存在请求头中发送的吗,xhr.send(name="123")和设置请求头命令有什么区别,都是数据保存在请求头中进行发送的吗
    2018-04-09 09:23:22
大迷糊虫 2018-04-08 18:09:48

这个需要先加载timeout,否则会有延迟的

  • 提问者 慕粉3125272 #1
    没懂啊,大牛
    2018-04-08 18:26:16
  • 提问者 慕粉3125272 #2
    请问下响应头是不是HTTP头
    2018-04-09 09:35:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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