什么是Ajax,Ajax的原理是什么?

简介: AJAX全称(Async Javascript and XML),即异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术。

一、什么是Ajax?

AJAX全称(Async Javascript and XML),即异步的JavaScript 和XML,是一种创建交互式网页应用的网页开发技术。


特点:异步发送请求;无需重新刷新当前页面,采用部分刷新。


二、Ajax的原理是什么?

相当于在用户和服务器之间加了一个中间层,使用户操作和服务器响应异步化,并不是所有的用户请求都提交给服务器,像一些数据处理可以交给Ajax引擎来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为服务器提交请求。


三、Ajax是怎样实现的?


(1)创建 Ajax的核心对象 XMLHttpRequest对象


通过XMLHttpRequest() 构造函数用于初始化一个 XMLHttpRequest 实例对象


const xhr = new XMLHttpRequest();


(2)通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接


xhr.open(method, url, [async][, user][, password])
//method:表示当前的请求方式,常见的有GET、POST
//url:服务端地址
//async:布尔值,表示是否异步执行操作,默认为true
//user: 可选的用户名用于认证用途;默认为null
//password: 可选的密码用于认证用途,默认为null


(3)  构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端


xhr.send([body])
//body: 在 xhr 请求中要发送的数据体,如果不传递数据则为 null 如果使用GET请求发送数据的时候,需要注意如下:
//将请求数据添加到open()方法中的url地址中
//发送请求数据中的send()方法中参数设置为null1.


(4)  绑定onreadystatechange事件,XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态


request.onreadystatechange = function(e){
    if(request.readyState === 4){ // 整个请求过程完毕
        if(request.status >= 200 && request.status <= 300){
            console.log(request.responseText) // 服务端返回的结果
        }else if(request.status >=400){
            console.log("错误信息:" + request.status)
        }
    }
}
//readyState 属性一共有5个值,分别表示不同的请求响应阶段:
//0: 还未创建请求,即未调用 open() 方法
//1: 已调用 open() 方法,但未发送 send() 方法
//2: 已调用 send() 方法,但未接收到响应
//3: 已接收到部分响应
//4: 已接收到全部的响应


四、原生整体流程


const request = new XMLHttpRequest()
request.onreadystatechange = function(e){
    if(request.readyState === 4){ // 整个请求过程完毕
        if(request.status >= 200 && request.status <= 300){
            console.log(request.responseText) // 服务端返回的结果
        }else if(request.status >=400){
            console.log("错误信息:" + request.status)
        }
    }
}
request.open('POST','http://xxxx请求域名')
request.send()


五、jquery插件封装的ajax请求


(1)如果是自己进行封装


function ajax(options) {
    //创建XMLHttpRequest对象
    const xhr = new XMLHttpRequest()
    //初始化参数的内容
    options = options || {}
    options.type = (options.type || 'GET').toUpperCase()
    options.dataType = options.dataType || 'json'
    const params = options.data
    //发送请求
    if (options.type === 'GET') {
        xhr.open('GET', options.url + '?' + params, true)
        xhr.send(null)
    } else if (options.type === 'POST') {
        xhr.open('POST', options.url, true)
        xhr.send(params)
    //接收请求
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
            let status = xhr.status
            if (status >= 200 && status < 300) {
                options.success && options.success(xhr.responseText, xhr.responseXML)
            } else {
                options.fail && options.fail(status)
            }
        }
    }
}


(2)  如果是使用jQuery插件,首先需要引入插件,然后调用Ajax方法

形式:$.ajax({name:val, name:val,...});

可选字段:

1)url:链接地址,字符串表示

2)data:需发送到服务器的数据,GET与POST都可以,格式为{A: '...', B: '...'}

3)type:"POST" 或 "GET",请求类型

4)timeout:请求超时时间,单位为毫秒,数值表示

5)cache:是否缓存请求结果,bool表示

6)contentType:内容类型,默认为"application/x-www-form-urlencoded"

7)dataType:服务器响应的数据类型,字符串表示;当填写为json时,回调函数中无需再对数据反序列化为json

8)success:请求成功后,服务器回调的函数

9)error:请求失败后,服务器回调的函数

10)complete:请求完成后调用的函数,无论请求是成功还是失败,都会调用该函数;如果设置了success与error函数,则该函数在它们之后被调用

11)async:是否异步处理,bool表示,默认为true;设置该值为false后,JS不会向下执行,而是原地等待服务器返回数据,并完成相应的回调函数后,再向下执行


$.ajax({
    url: "/greet",
    data: {name: 'jenny'},
    type: "POST",
    dataType: "json",
    success: function(data) {
        // data = jQuery.parseJSON(data);  //dataType指明了返回数据为json类型,故不需要再反序列化
        ...
    }
});


最后还有什么疑问之处请指出!

目录
相关文章
|
6月前
|
XML 前端开发 JavaScript
ajax原理是什么?如何实现?
ajax原理是什么?如何实现?
91 0
|
前端开发 安全 数据格式
js-ajax的工作原理
前后端交互,首先需要创建一个XMLHttpRequest对象,通过这个对象的open方法与服务器建立连接,通过send方法将请求发送给服务器,最后通过事件监听,将后端请求的数据通过回调函数返回给前端。
|
XML 前端开发 JavaScript
Ajax运行原理
Ajax运行原理
102 0
|
2月前
|
XML 前端开发 JavaScript
ajax运行原理
AJAX(Asynchronous JavaScript and XML)是一种使网页能够在不重新加载整个页面的情况下与服务器异步通信的技术。尽管名字中有“XML”,但它支持多种数据格式,如JSON、HTML和纯文本。用户行为触发AJAX请求后,通过创建`XMLHttpRequest`对象或使用现代浏览器中的`fetch` API来配置并发送HTTP请求。请求完成后,可以通过回调函数处理服务器返回的数据,更新网页内容。现代JavaScript推荐使用更简洁强大的`fetch` API来实现AJAX功能,广泛应用于动态网页和单页应用中,提升用户体验。
|
6月前
|
数据采集 前端开发 JavaScript
Python爬虫之Ajax数据爬取基本原理#6
Ajax数据爬取原理【2月更文挑战第19天】
90 1
Python爬虫之Ajax数据爬取基本原理#6
|
前端开发
Ajax原理--详解
Ajax原理--详解
|
6月前
|
前端开发 JavaScript 搜索推荐
Ajax原理以及优缺点
Ajax原理以及优缺点
|
11月前
|
前端开发 PHP 数据安全/隐私保护
【PHP学习】—利用ajax原理实现密码修改功能(九)
【PHP学习】—利用ajax原理实现密码修改功能(九)
|
11月前
|
前端开发 JavaScript PHP
【PHP学习】—利用ajax原理实现登录功能(八)
【PHP学习】—利用ajax原理实现登录功能(八)
|
XML 前端开发 JavaScript
ajax是什么?原理以及优缺点
ajax是什么?原理以及优缺点
125 0