注意!!代码前面带+为新增代码
封装自己的$.get方法
创建$的对象
let $ = {
}
给对象添加一个方法叫get
let $ = {
get: function () {}
}
给get方法传一个配置对象 options
let $ = {
get: function ( + options) {
// 表示接受到调用函数时 传递的配置对象
+ let url = options.url
+ let data = options.data
+ let success = options.success
console.log(url);
}
}
创建 xhr对象
let $ = {
get: function (options) {
// 表示接受到调用函数时 传递的配置对象
let url = options.url
let data = options.data
let 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.url
let data = options.data
let 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.url let data = options.data let 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)
}
}