本文详细讲解如何使用原生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');
}
}
}
以上内容为本文的全部代码与说明,希望对读者的学习过程有所帮助。