Ajax基础以及封装(一)











1 <script type="text/javascript"> 2 // 1.创建ajax对象 3 var xhr = new XMLHttpRequest(); 4 // 2.告诉Ajax对象要向哪发送请求,以什么方式发送请求 5 // 1)请求方式 2)请求地址 6 xhr.open('get', 'http://localhost:3000/first'); 7 // 3.发送请求 8 xhr.send(); 9 // 4.获取服务器端响应到客户端的数据 10 xhr.onload = function (){ 11 console.log(xhr.responseText) 12 } 13 </script>






![]()

![]()




![]()

![]()

![]()





xhr.readyState // 获取Ajax状态码



// 当Ajax状态码发生变化时
xhr.onreadystatechange = function () {
// 判断当Ajax状态码为4时
if (xhr.readyState == 4) {
// 获取服务器端的响应数据
console.log(xhr.responseText);
}
}






![]()
![]()
xhr.open('get', 'http://www.example.com?t=' + Math.random());

1 function ajax (options) { 2 // 默认值 3 var defaults = { 4 type: 'get', 5 url: '', 6 async: true, 7 data: {}, 8 header: { 9 'Content-Type': 'application/x-www-form-urlencoded' 10 }, 11 success: function () {}, 12 error: function () {} 13 } 14 // 使用用户传递的参数替换默认值参数 15 Object.assign(defaults, options); 16 // 创建ajax对象 17 var xhr = new XMLHttpRequest(); 18 // 参数拼接变量 19 var params = ''; 20 // 循环参数 21 for (var attr in defaults.data) { 22 // 参数拼接 23 params += attr + '=' + defaults.data[attr] + '&'; 24 // 去掉参数中最后一个& 25 params = params.substr(0, params.length-1) 26 } 27 // 如果请求方式为get 28 if (defaults.type == 'get') { 29 // 将参数拼接在url地址的后面 30 defaults.url += '?' + params; 31 } 32 33 // 配置ajax请求 34 xhr.open(defaults.type, defaults.url, defaults.async); 35 // 如果请求方式为post 36 if (defaults.type == 'post') { 37 // 设置请求头 38 xhr.setRequestHeader('Content-Type', defaults.header['Content-Type']); 39 // 如果想服务器端传递的参数类型为json 40 if (defaults.header['Content-Type'] == 'application/json') { 41 // 将json对象转换为json字符串 42 xhr.send(JSON.stringify(defaults.data)) 43 }else { 44 // 发送请求 45 xhr.send(params); 46 } 47 } else { 48 xhr.send(); 49 } 50 // 请求加载完成 51 xhr.onload = function () { 52 // 获取服务器端返回数据的类型 53 var contentType = xhr.getResponseHeader('content-type'); 54 // 获取服务器端返回的响应数据 55 var responseText = xhr.responseText; 56 // 如果服务器端返回的数据是json数据类型 57 if (contentType.includes('application/json')) { 58 // 将json字符串转换为json对象 59 responseText = JSON.parse(responseText); 60 } 61 // 如果请求成功 62 if (xhr.status == 200) { 63 // 调用成功回调函数, 并且将服务器端返回的结果传递给成功回调函数 64 defaults.success(responseText, xhr); 65 } else { 66 // 调用失败回调函数并且将xhr对象传递给回调函数 67 defaults.error(responseText, xhr); 68 } 69 } 70 // 当网络中断时 71 xhr.onerror = function () { 72 // 调用失败回调函数并且将xhr对象传递给回调函数 73 defaults.error(xhr); 74 } 75 }

![]()
官方地址: https://aui.github.io/art-template/zh-cn/index.html
使用步骤
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Document</title>
6 <!-- 1. 将模板引擎的库文件引入到当前页面 -->
7 <script src="/js/template-web.js"></script>
8 </head>
9 <body>
10 <div id="container"></div>
11 <!-- 2.准备art-template模板 -->
12 <script type="text/html" id="tpl">
13 <h1>{{username}} {{age}}</h1>
14 </script>
15 <script type="text/javascript">
16 // 3.告诉模板引擎将那个数据和哪个模板进行拼接
17 // 1) 模板id 2)数据 对象类型
18 // 方法的返回值就是拼接好的html字符串
19 var html = template('tpl', {username: 'zhangsan', age: 30});
20 document.getElementById('container').innerHTML = html;
21 </script>
22 </body>
23 </html>

浙公网安备 33010602011771号