注意!!代码前面带+为新增代码

封装自己的$.get方法

创建$的对象

  1. let $ = {
  2. }

给对象添加一个方法叫get

  1. let $ = {
  2. get: function () {}
  3. }

给get方法传一个配置对象 options

  1. let $ = {
  2. get: function ( + options) {
  3. // 表示接受到调用函数时 传递的配置对象
  4. + let url = options.url
  5. + let data = options.data
  6. + let success = options.success
  7. console.log(url);
  8. }
  9. }

创建 xhr对象

  1. let $ = {
  2. get: function (options) {
  3. // 表示接受到调用函数时 传递的配置对象
  4. let url = options.url
  5. let data = options.data
  6. let success = options.success
  7. // 创建xhr对象
  8. + let xhr = new XMLHttpRequest()
  9. // 调用xhr的open方法
  10. + xhr.open('get', url)
  11. }
  12. }

get方法带参数与不带参数处理

  • 如果带参数我们需要先将参数转换为字符串
  1. let $ = {
  2. // 将对象转换为字符串
  3. obj2qs: function(obj) {
  4. if (typeof obj !== 'object') return console.log('传递的数据不是对象');
  5. let arr = []
  6. for (let k in obj) {
  7. arr.push(k + '=' + obj[k])
  8. }
  9. return arr.join('&')
  10. },
  11. get: function (options) {
  12. // 表示接受到调用函数时 传递的配置对象
  13. let url = options.url
  14. let data = options.data
  15. let success = options.success
  16. // 创建xhr对象
  17. let xhr = new XMLHttpRequest()
  18. // 调用xhr的open方法
  19. xhr.open('get', url)
  20. }
  21. }
  • 带参数与不参数的功能实现

    1. let $ = {
    2. // 将对象转换为字符串
    3. obj2qs: function (obj) {
    4. if (typeof obj !== 'object') return console.log('传递的数据不是对象')
    5. let arr = []
    6. for (let k in obj) {
    7. arr.push(k + '=' + obj[k])
    8. }
    9. return arr.join('&')
    10. },
    11. get: function (options) {
    12. // 表示接受到调用函数时 传递的配置对象
    13. let url = options.url
    14. let data = options.data
    15. let success = options.success
    16. // 创建xhr对象
    17. let xhr = new XMLHttpRequest()
    18. // 判断 data有没有数据
    19. // if (data) {
    20. // // 表示用户传递了数据
    21. // xhr.open('get', url + '?' + this.obj2qs(data))
    22. // } else {
    23. // // 调用xhr的open方法
    24. // xhr.open('get', url)
    25. // }
    26. xhr.open('get', data ? url + '?' + this.obj2qs(data) : url)
    27. xhr.send()
    28. }
    29. }

监听服务器返回的数据

  1. xhr.onreadystatechange = function() {
  2. if (xhr.readyState === 4 && xhr.status === 200) {
  3. // 获取到服务器响应的数据 并且将其转换为 js对象
  4. let data = JSON.parse(xhr.responseText)
  5. success && success(data)
  6. }
  7. }