原生JavaScript实现轻量级Ajax请求函数
作者:青柠时间:2026-10-22 11:14:21浏览:388
本文介绍如何使用原生JavaScript封装一个轻量级的Ajax请求函数,避免引入庞大的第三方库。通过封装XMLHttpRequest及ActiveXObject兼容逻辑,提供简洁的get和post方法,支持同步异步配置及错误处理,适用于功能单一且对性能有要求的页面开发。
原生JavaScript实现轻量级Ajax请求函数
在网页开发中,若需向服务器发起Ajax请求,通常倾向于使用JQuery等已封装好的库,因其调用方式较为简便。
然而,这类库往往包含大量功能,引入了许多不必要的代码。对于仅需实现单一简单功能的页面而言,引用如此庞大的库文件显得冗余。
我们可以自行实现一个轻量级的Ajax请求功能,具体实现代码如下:
var ajax = {};
ajax.x = function () {
if (typeof XMLHttpRequest !== 'undefined') {
return new XMLHttpRequest();
}
var versions = [
"MSXML2.XmlHttp.6.0",
"MSXML2.XmlHttp.5.0",
"MSXML2.XmlHttp.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XmlHttp.2.0",
"Microsoft.XmlHttp"
];
var xhr;
for (var i = 0; i < versions.length; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
} catch (e) {
}
}
return xhr;
};
ajax.send = function (url, method, data, success,fail,async) {
if (async === undefined) {
async = true;
}
var x = ajax.x();
x.open(method, url, async);
x.onreadystatechange = function () {
if (x.readyState == 4) {
var status = x.status;
if (status >= 200 && status < 300) {
success && success(x.responseText,x.responseXML)
} else {
fail && fail(status);
}
}
};
if (method == 'POST') {
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
x.send(data)
};
ajax.get = function (url, data, callback, fail, async) {
var query = [];
for (var key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
ajax.send(url + (query.length ? '?' + query.join('&') : ''), 'GET', null, callback, fail, async)
};
ajax.post = function (url, data, callback, fail, async) {
var query = [];
for (var key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
ajax.send(url,'POST', query.join('&'), callback, fail, async)
};
GET请求使用示例
使用示例:GET请求
ajax.get('/test.php', {foo: 'bar'}, function(response,xml) {
//success
},
function(status){
//fail
});
POST
ajax.post('/test.php', {foo: 'bar'}, function(response,xml) {
//succcess
},function(status){
//fail
});
此处需注意一个问题,若需发送类似
var sendCmd = "?op_code=" + code + "&op_cmd=" + cmd;
ajax.post('/control' + sendCmd,'',function(response,xml) {
console.log('success');
},
function(status){
console.log('failed:' + status);
});
总结
总结
上述内容介绍了使用原生JavaScript编写Ajax请求函数的方法,希望能对读者有所帮助。如有任何疑问,欢迎留言,小编将及时回复。同时感谢大家对本站的支持!
作者最新文章
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
