Asynchronous Javascript And XML”(异步 JavaScript 和 XML)。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
概念
XMLHttpRequest 对象
是 AJAX 的基础,用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
语法:variable=new XMLHttpRequest();
向服务器发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
open(method,url,async)
规定请求的类型、URL 以及是否异步处理请求。
- method:请求的类型;GET 或 POST
- url:文件在服务器上的位置
- async:true(异步)或 false(同步)
get和post
```html get 1.用来请求数据 2.请求放在url地址里面的,对用户是可见的 3.发送的信息也是有限制的
post 1.提交数据 2.发送数据对用户来说是不可见 3.发送数据理论上是没有限制的
<a name="WLic2"></a>## send(_string_)将请求发送到服务器。- _string_:仅用于 POST 请求<a name="Bis5i"></a># 服务器响应如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。<br />responseText 获得字符串形式的响应数据。<br />responseXML 获得 XML 形式的响应数据。<a name="1zrfA"></a># onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。<br />每当 readyState 改变时,就会触发 onreadystatechange 事件。<br />readyState 属性存有 XMLHttpRequest 的状态信息。<br />下面是 XMLHttpRequest 对象的三个重要的属性:<a name="onreadystatechange"></a>## onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。<a name="Up58B"></a>## readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。<br />0: 请求未初始化<br />1: 服务器连接已建立<br />2: 请求已接收<br />3: 请求处理中<br />4: 请求已完成,且响应已就绪<a name="lyTV6"></a>## status200: "OK"<br />404: 未找到页面当 readyState 等于 4 且状态为 200 时,表示响应已就绪:<br />if (xmlhttp.readyState==4 && xmlhttp.status==200)<a name="5jO3c"></a># 使用 Callback 函数callback 函数是一种以参数形式传递给另一个函数的函数。<br />如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。<a name="Z8ib5"></a># 没封装的ajax```html<p id="app"></p><script>/*1.什么是异步 何时使用2.如何使用原生ajax*/var app = document.getElementById("app")var url ="http://192.168.4.18:3000/search?keywords=哈"/* ajax 如何使用ajax向后台获取数据*//* 1. 创建ajax核心对象*/var xhr = new XMLHttpRequest();/* 2.与服务器建立连接 xhr.open(method,url,async)请求的方式,地址,是否异步*/xhr.open("get",url,true)/* 3.发送请求 */xhr.send()/* 4.响应 *//* onreadystatechange 监听服务器的响应状态*/xhr.onreadystatechange = function(){/* xhr.status 服务器端响应的状态码 200 *//* xhr.readyState 服务器响应的进度 4 响应已经完成 */if(xhr.readyState == 4 && xhr.status == 200){var txt = xhr.responseText;/* JSON.parse() 可以json格式的字符串,转换为json格式的数据 */var obj = JSON.parse(txt);console.log(obj)app.innerHTML = obj.name}}</script>
传参解构
/* 解构 */function http({callback:callback,method,url,}) {console.log(callback);console.log(method)console.log(url)}http({callback:"123",method:"get",url:"xx"})
封装ajax
http.js
function ajax({url,method,success}){var xhr = new XMLHttpRequest()xhr.open(method,url,true)xhr.send()xhr.onreadystatechange = function(){if(xhr.readyState == 4 && xhr.status == 200){var res = JSON.parse(xhr.responseText);success(res);}}}
封装ajax..html
var url = "http://192.168.4.18:3000/comment/music?id=186016&limit=1"ajax({url,method:"get",success:res=>{console.log(res)}})
