原生JS中Ajax的使用方法

一、Ajax对象(3个方法5个属性)

1、创建Ajax对象

如果想使用Ajax必须有一个前提:首先要创建一个Ajax对象,但是由于Ajax属于客户端语言,所以其在不同浏览器下创建的方式也是不同的:

基于IE内核的浏览器(低于IE8以下版本的IE浏览器)

var Ajax对象 = new ActiveXObject('Microsoft.XMLHTTP');

基于W3C内核的浏览器(火狐、谷歌、Opera、高版本(IE8以上版本)的IE浏览器)

var Ajax对象 = new XMLHtttpRequest();

2、解决兼容性问题

在IE内核的浏览器下可以通过window.navigator.userAgent.indexOf('MSIE') > 0来识别是否为IE浏览器,但是在新版本中此功能会导致无法创建Ajax对象。

使用jQuery源代码中的封装方式解决兼容性问题:

//封装一个函数,用于解决ajax对象兼容性问题
function createXhr() {
    try {
        //在W3C浏览器下创建Ajax对象
        return new XMLHttpRequest();
    } catch(e) {
        
    }
    try {
        //在IE浏览器下创建Ajax对象
        return new ActiveXObject('Microsoft.XMLHTTP');
    } catch(e) {
        
    }
    alert('您的浏览器不支持Ajax对象,丢了吧!');
}

3、Ajax对象下常用的方法

方法名称 方法说明
open(method,url)

初始化Ajax对象(主要功能是告诉Ajax对象,向哪个页面以哪种方式发送http请求)

参数说明:

method:要发送的http请求类型,get或post请求

url:要请求的url地址

setRequestHeader(header,value)

设置请求头信息

参数说明:

header:请求头

value:请求头信息

send(content)

发送Ajax请求(主要功能是执行Ajax,让Ajax开始运转)

参数说明:

content:数据传输时发送的数据,content就是请求空白行的数据。

如果是get请求就是null,如果是post请求,就是其传递的值

4、Ajax对象下常用的属性

属性名称 属性说明
onreadystatechange 当Ajax状态码改变时所触发的回调函数
readyState

Ajax状态码

0:表示对象已建立,但未初始化 var xhr = createXhr();

1:表示对象已初始化,但未发送 xhr.open(‘get’,’demo01’);

2:已调用send方法进行请求 xhr.send(null);

3:正在接收数据(接收到一部分)

4:接收完成

status  Ajax响应状态码,200(正常返回),404(未找到页面),302(缓存)
statusText  响应状态文本
reponseText  如果服务器端返回文本数据,则使用responseText进行接收
responseXML  如果服务器端返回XML数据,则使用responseXML进行接收

二、Ajax中的get请求五步走

  1. 创建Ajax对象
  2. 设置回调函数(onreadystatechange)
  3. 初始化Ajax对象
  4. 发送Ajax对象
  5. 判断与执行

通过http请求向服务器发送数据并返回结果

//定义页面载入事件
window.onload = function() {
    document.getElementById('btn').onclick = function() {
        //获取文本框中的数据
        var username = document.getElementById('username').value;
        //1、创建Ajax对象
        var xhr = createXhr();
        //2、设置回调函数
        xhr.onreadystatechange = function() {
            //5、判断与执行
            if(xhr.readyState==4 && xhr.status==200) {
                alert(xhr.responseText);
            }
        }
        //3、初始化Ajax对象
        var url = 'test.php?username='+username;
        xhr.open('get',url);
        //4、发送Ajax请求
        xhr.send(null);
    }
}

三、Ajax中的post请求六步走

  1. 创建Ajax对象
  2. 设置回调函数
  3. 初始化Ajax对象
  4. 设置请求头信息
  5. 发送Ajax请求
  6. 判断与执行

通过Ajax中的post请求获取服务端数据

//页面载入事件
window.onload = function() {
    document.getElementById('btn').onclick = function() {
        //获取表单数据
        var username = document.getElementById('username').value;

        //1、创建Ajax对象
        var xhr = createXhr();
        //2、设置回调函数
        xhr.onreadystatechange = function() {
            //6、判断与执行
            if(xhr.readyState==4 && xhr.status==200) {
                alert(xhr.responseText);
            }
        }
        //3、初始化Ajax对象
        xhr.open('post','demo01.php');
        //4、设置请求头信息
        xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        //5、发送Ajax对象
        var content = 'username='+username;
        xhr.send(content);
    }
}
原文地址:https://www.cnblogs.com/chenjiacheng/p/6522255.html