QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 3695|回复: 0

[HTML/CSS/JS] 简简单单封装一个Ajax函数

[复制链接]

等级头衔

积分成就    金币 : 2841
   泡泡 : 1516
   精华 : 6
   在线时间 : 1294 小时
   最后登录 : 2024-11-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2021-5-6 21:53:19 | 显示全部楼层 |阅读模式
一、Ajax一般使用方法. ?8 t# [0 O9 b
  1. // 一个Ajax函数
  2. var xhr = null;
  3. if(window.XMLHttpRequest){
  4.    xhr = new XMLHttpRequest;
  5. }else{
  6.    xhr = new ActiveXObject("Microsoft.XMLHTTP");
  7. }
  8. xhr.open("GET","https://jsonplaceholder.typicode.com/users");
  9. xhr.send(null);
  10. xhr.onreadystatechange = function(){
  11.    if(this.readyState === 4){
  12.         console.log(xhr.responseText)
  13.     }
  14. }
二、封装自己的 Ajax 函数+ ?* W1 b' H9 I" A9 A
  • 参数1:{string} 请求方法--method
  • 参数2:{string} 请求地址--url
  • 参数3:{object} 请求参数--params
  • 参数4:{function} 请求完成后,执行的回调函数--done! G  j, C. J1 D; ~% G
  1. function ajax(method,url,params,done){
  2. //  统一将method方法中的字母转成大写,后面判断GET方法时 就简单点
  3.   method = method.toUpperCase();
  4.   //IE6的兼容
  5.   var xhr = window.XMLHttpRequest
  6.    ? new XMLHttpRequest()
  7.    : new ActiveXObject("Microsoft.XMLHTTP");
  8.   //创建打开一个连接 open
  9.             
  10.   //将对象格式的参数转为urlencoded模式
  11.   //新建一个数组,使用for循环,将对象格式的参数,
  12.   //以(id = 1)的形式,每一个键值对用 & 符号连接
  13. var pairs = [];
  14. for(var k in params){
  15.      pairs.push(k + "=" + params[k]);
  16.   }
  17.   var str = pairs.join("&");      
  18.   //判断是否是get方法 , get方法的话,需要更改url的值
  19. if(method == "GET"){
  20.        url += "?" + str;
  21.   }
  22.             
  23. //创建打开一个连接
  24. xhr.open(method,url);
  25. var data = null;
  26. if(method == "POST"){
  27.     //post方法 还需要设置请求头、请求体
  28.     xhr.setRequestHeader("Content-Type",
  29.     "application/x-www-form-urlencoded");
  30.     data = str;
  31.                  
  32. }
  33. xhr.send(data);
  34. //执行回调函数
  35. xhr.onreadystatechange = function(){
  36.    if(this.readyState == 4) {
  37.        done(JSON.parse(this.responseText));
  38.    }return;
  39.    // 执行外部传进来的回调函数即可
  40.    // 需要用到响应体
  41.    }
  42. }  
  43. //调用函数
  44. //get方法
  45. //  ajax("GET","http://localhost:3000/users",
  46. //     {"id":1},
  47. //     function(data){
  48. //         console.log(data);
  49. //  });
  50. //post方法     
  51. ajax("POST", "http://localhost:3000/users",
  52. { "name": "lucky","class":2,"age":20 },
  53. function (data) {
  54.      console.log(data);
  55. });
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-11-21 23:30

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表