原生JavaScript实现Ajax的完整指南:从XMLHttpRequest创建到GET/POST请求
作者:青柠时间:2026-10-30 05:19:57浏览:537
本文详细讲解如何使用原生JavaScript实现Ajax功能。内容涵盖XMLHttpRequest对象的兼容性创建方法(包括ActiveXObject处理),以及通过该对象发起GET和POST请求的具体代码实现。重点解析请求头设置、状态监听及数据交互流程,适用于需要理解底层网络通信机制的开发者参考。
原生JavaScript实现Ajax概述
本文旨在分享使用原生JavaScript编写Ajax功能的代码示例,供读者参考学习。
XMLHttpRequest对象的兼容性创建
var getXmlHttpRequest = function() {
if (window.XMLHttpRequest) {
//主流浏览器提供了XMLHttpRequest对象
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
//低版本的IE浏览器没有提供XMLHttpRequest对象
//所以必须使用IE浏览器的特定实现ActiveXObject
return new ActiveXObject("Microsoft.XMLHttpRequest");
}
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function() {
console.log(xhr.readyState);
if (xhr.readyState === 3 && xhr.status === 200) {
//获取成功后执行操作
//数据在xhr.responseText
console.log(xhr.responseText);
}
};
xhr.open("get", "data.php", true);
xhr.send("");
接下来介绍几种利用JavaScript实现原生Ajax的具体方法。在发起Ajax请求前,首要步骤是创建XMLHttpRequest对象。若浏览器不支持该对象,则需回退使用ActiveXObject进行创建,具体实现方式如下所示。
var xmlHttp;
function createxmlHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp=new XMLHttpRequest();
}
(1)利用上述创建的xmlHttp对象,实现最基础的Ajax GET请求:
实现Ajax GET请求
function doGet(url){
// 注意在传参数值的时候最好使用encodeURI处理一下,以防出现乱码
createxmlHttpRequest();
xmlHttp.open("GET",url);
xmlHttp.send(null);
xmlHttp.onreadystatechange = function() {
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
alert('success');
} else {
alert('fail');
}
}
}
(2)利用上述创建的xmlHttp对象,实现最基础的Ajax POST请求:
实现Ajax POST请求
function doPost(url,data){
// 注意在传参数值的时候最好使用encodeURI处理一下,以防出现乱码
createxmlHttpRequest();
xmlHttp.open("POST",url);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(data);
xmlHttp.onreadystatechange = function() {
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
alert('success');
} else {
alert('fail');
}
}
}
以上内容为本文的全部代码与说明,希望对读者的学习过程有所帮助。
作者最新文章
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
