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实现,就来看看。
如对本文有疑问, 点击进行留言回复!!
offset、client、scroll (width,height、left,top、X,Y)
网友评论