当前位置:   article > 正文

js---封装ajax的get请求和post请求_js封装ajax请求

js封装ajax请求

一、介绍:

1、函数接受一个对象配置信息,url为请求的地址,type为请求的类型,data为请求参数,success为请求成功的回调函数,fail为请求失败的回调函数

二、使用

1、当请求方式为get时,参数格式可以为:

①无参

②参数为对象:{a:1,b=2}

③参数为参数拼接的字符串格式:a=1&b=2

2、当请求方式为post时,参数格式可以为

①参数为对象:{a:1,b=2}

②参数为参数拼接的字符串格式:a=1&b=2

③参数为new FormData()

函数如下 

  1. function ajax({ url, type, data, success, fail }) {
  2. // 1.创建xhr实例对象
  3. const xhr = new XMLHttpRequest()
  4. if (type && type === 'get') {
  5. //请求类型为get请求
  6. if (data) {
  7. // 参数为字符串格式
  8. if (typeof data === 'string') {
  9. url += '?'
  10. } else if (typeof data === 'object') {
  11. // 参数为对象格式
  12. const arr = []
  13. //通过for in 循环将对象格式转化成a=1&b=2格式的字符串
  14. for (const key in data) {
  15. arr.push(`${key}=${data[key]}`)
  16. }
  17. url += '?' + arr.join("&")
  18. }
  19. }
  20. // 无参数
  21. // 2.配置xhr
  22. xhr.open(type, url)
  23. // 3.发送请求
  24. xhr.send(data)
  25. } else if (type && type === 'post') {
  26. //请求类型为post请求
  27. // 2.配置xhr,配置需要在设置请求头类型的前面
  28. xhr.open(type, url)
  29. if (data) {
  30. if (typeof data === 'string') {
  31. //参数时字符串类型
  32. xhr.setRequestHeader(
  33. 'Content-type',
  34. 'application/x-www-form-urlencoded'
  35. );
  36. } else if (data instanceof FormData) {
  37. //参数是FormData时,不需要在请求头中设置数据格式
  38. }
  39. else if (typeof data === 'object') {
  40. //参数为对象
  41. xhr.setRequestHeader('Content-type', 'application/json');
  42. data = JSON.stringify(data);
  43. }
  44. }
  45. // 3.发送请求
  46. xhr.send(data)
  47. }
  48. // 4.监听事件
  49. xhr.addEventListener("readystatechange", function () {
  50. if (xhr.readyState === 4) {
  51. if (xhr.status === 200) {
  52. // 请求成功
  53. success && success(JSON.parse(xhr.response))
  54. }
  55. else {
  56. // 请求失败
  57. fail && fail(JSON.parse(xhr.response))
  58. }
  59. }
  60. })
  61. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/148105
推荐阅读
相关标签
  

闽ICP备14008679号