35 高级:自己实现AJAX

  • 用JS设置请求头
设置第一部分:request.open('get','/xxx')
设置第二部分:request.setRequestHeader('content-type','x-www-form-urlencoded')
设置第三部分:request.send('key1=value1&key2=value2')
  • 用JS获取响应头
获取第一部分:request.status / request.statusText
获取第二部分:request.getResponseHeader('Content-Type') / request.getAllResponseHeaders()
获取第四部分:request.responseText
  • 为了避免写的API参数太多而混乱的情况,一般把要传入的多个参数变成对象,把该对象的key定下来,就相当于参数命名(ES6的解构赋值)
  • 即使响应是4开头的状态码,也会有第四部分,也可以读取第四部分
  • 通过arguments.length来使得函数可以接收不固定个数的参数
function f1(x1[,x2]){
  if(arguments.length === 1){......}
  else if(arguments.length === 2){......}
}

上述代码可以只传一个参数,也可以传多个参数

  • 假如函数形参少于实际参数,传入的实际参数可以从arguments对象中获得

    image.png

  • es6 解构赋值


    image.png
  • jquery.ajax()会将响应里content-Type是json的内容进行parse将字符串转换成对象

  • 实现jQuery.ajax的封装

window.jQuery.ajax = function({url,method,body}){//函数参数传入用到了es6的解构赋值
  return new Promise(function(resolve,reject){
      let request = XMLHttpRequest()
      request.open(method,url)
      request.onreadychange = function(){
          if(request.readyState === 4){
              if(request.status === 200){resolve()}
              else{reject()}    
          }
      }
      request.send()
    })
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、JS操作请求与响应 之前,已经了解过请求与响应都由4部分组成,那么在使用AJAX发请求时能否自由的设置或是获取...
    格林姆大师阅读 329评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,907评论 1 45
  • $HTML, HTTP,web综合问题 1、前端需要注意哪些SEO 2、 的title和alt有什么区别 3、HT...
    Hebborn_hb阅读 4,690评论 0 20
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,262评论 2 19
  • 按照惯例,正月初二是我们弟兄姐妹相约去舅家拜年的日子。儿时过年去舅家,都是跟着妈妈,而且不可能弟兄姐妹...
    宗林的李阅读 584评论 3 10