注意!!代码前面带+为新增代码
封装自己的$.get方法
创建$的对象
let $ = {}
给对象添加一个方法叫get
let $ = {get: function () {}}
给get方法传一个配置对象 options
let $ = {get: function ( + options) {// 表示接受到调用函数时 传递的配置对象+ let url = options.url+ let data = options.data+ let success = options.successconsole.log(url);}}
创建 xhr对象
let $ = {get: function (options) {// 表示接受到调用函数时 传递的配置对象let url = options.urllet data = options.datalet success = options.success// 创建xhr对象+ let xhr = new XMLHttpRequest()// 调用xhr的open方法+ xhr.open('get', url)}}
get方法带参数与不带参数处理
- 如果带参数我们需要先将参数转换为字符串
let $ = {// 将对象转换为字符串obj2qs: function(obj) {if (typeof obj !== 'object') return console.log('传递的数据不是对象');let arr = []for (let k in obj) {arr.push(k + '=' + obj[k])}return arr.join('&')},get: function (options) {// 表示接受到调用函数时 传递的配置对象let url = options.urllet data = options.datalet success = options.success// 创建xhr对象let xhr = new XMLHttpRequest()// 调用xhr的open方法xhr.open('get', url)}}
带参数与不参数的功能实现
let $ = {// 将对象转换为字符串obj2qs: function (obj) {if (typeof obj !== 'object') return console.log('传递的数据不是对象')let arr = []for (let k in obj) {arr.push(k + '=' + obj[k])}return arr.join('&')},get: function (options) {// 表示接受到调用函数时 传递的配置对象let url = options.urllet data = options.datalet success = options.success// 创建xhr对象let xhr = new XMLHttpRequest()// 判断 data有没有数据// if (data) {// // 表示用户传递了数据// xhr.open('get', url + '?' + this.obj2qs(data))// } else {// // 调用xhr的open方法// xhr.open('get', url)// }xhr.open('get', data ? url + '?' + this.obj2qs(data) : url)xhr.send()}}
监听服务器返回的数据
xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {// 获取到服务器响应的数据 并且将其转换为 js对象let data = JSON.parse(xhr.responseText)success && success(data)}}
