当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 原生JavaScript手写Ajax

原生JavaScript手写Ajax

2020年05月03日  | 移动技术网IT编程  | 我要评论
 1 <script>
 2 // 封装通用的xhr对象,兼容各个版本
 3 function creatxhr() {
 4 // 判断浏览器是否将xmlhttprequest作为本地对象实现,针对ie7,firefox, opera等
 5 if (typeof xmlhttprequest != "undefined") {
 6   return new xmlhttprequest();
 7 }
 8 else if (typeof activexobject != "undefined") {
 9   // 将所有可能出现的activexobject版本放在一个数组中
10   var xhrarr = [
11     'microsoft.xmlhttp',
12     'msxml2.xmlhttp.6.0',
13     'msxml2.xmlhttp.5.0',
14     'msxml2.xmlhttp.4.0',
15     'msxml2.xmlhttp.3.0',
16     'msxml2.xmlhttp.2.0'
17   ];
18   // 遍历创建xmlhttprequest对象
19   var xhr;
20   for (let i = 0; i < array.length; i++) {
21     try {
22       // 创建xmlhrrprequest对象
23       xhr = new activexobject(xhrarr[i]);
24       break;
25     } catch (error) {
26       
27     }
28     
29   }
30   return xhr;
31 }
32 else{
33   throw new error('不支持xmlhttprequest对象');
34 }
35 }
36 // 创建xhr
37 var xhr = creatxhr();
38 // 存储获取到的数据
39 var data;
40 
41 // 响应xmlhttprequest对象状态变化的函数,onreadystatechange在readystate属性发生改变时触发
42 xhr.onreadystatechange = function (/* callback */) {
43 // 异步调用成功,响应内容解析完成,可以在客户端调用
44 if (xhr.readystate == 4) {
45   // 200 ok,304 读取缓存
46   if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
47     // 获取服务器返回的数据
48     // 数据以字符串类型存放在 xhr.responsetext
49     // json序列化解析xhr.responsetext
50     // 将ajax获取到的数据传递出去
51     data = json.parse(xhr.responsetext);
52     // 或者在参数中传入callback,在此处执行回调函数
53     // callback && callback();
54   }
55 }
56 };
57 
58 
59 // 创建请求,这里只是创建,并不发送
60 xhr.open("get", "./xxx.json", true);
61 
62 // 发送请求
63 xhr.send(null);
64 
65 /*  使用post方法,传参方式
66 // 创建请求,这里只是创建,并不发送
67 xhr.open("post", "./xxx.json", true);
68 // 设置http头部信息
69 xhr.setrequestheader("content-type", "application/x-www-form-urlcoded");
70 xhr.send({param1:'strrr', param2:789}); 
71 */
72 </script>

想不起来ajax实现,就来看看。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网