javascript ajax原生封装
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript ajax原生封装相关的知识,希望对你有一定的参考价值。
function Ajax (url, options) {
// 创建ajax对象
var xhr = null
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest()
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP') // 兼容ie6
}
var type = options.type ? options.type.toUpperCase() : 'GET'
var data = options.data
var success = options.success
var fail = options.fail
// 用于清除缓存
var timeStamp = new Date().getTime()
// data = ['a', 'b', 'c']
var s = []
if (typeof data === 'object') {
for (var key in data) {
s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(data[key])
}
data = s.join('&')
// console.log(data)
}
if (type === 'GET') {
if (data) {
xhr.open('GET', url + '?' + data, true) // 第三个参数async,一个可选的布尔值参数,默认为true,意味着是否执行异步操作
} else {
xhr.open('GET', url + '?t=' + timeStamp, true)
}
xhr.send()
} else if (type === 'POST') {
xhr.open('POST', url, true)
// 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') // jquery 默认为application/x-www-form-urlencoded
xhr.send(data)
}
// 处理返回数据
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
success && success(xhr.responseText)
} else {
if (fail) {
fail && fail(xhr.status)
}
}
}
}
}
// 测试调用
var sendData = {name: 'asher', sex: 'male'}
Ajax('data/data.html', {
data: sendData,
success: function (data) {
console.log(data)
},
fail: function (error) {
console.log(error)
}
})
以上是关于javascript ajax原生封装的主要内容,如果未能解决你的问题,请参考以下文章
原生JavaScript 封装ajax
4原生javascript封装ajax————呱呱二号
JavaScript原生封装ajax请求和Jquery中的ajax请求
JavaScript原生封装ajax请求和Jquery中的ajax请求,内附详细案例和注释!
ajax技术详解,封装一个原生的ajax请求
原生javascript封装类似jquery的ajax请求跨域函数