update: Ajax

This commit is contained in:
qianguyihao 2021-05-19 00:10:08 +08:00
parent 1e775ba3e7
commit 050ff8ae45
3 changed files with 509 additions and 497 deletions

View File

@ -1,19 +1,16 @@
## 同步和异步回顾
### 同步和异步的简单理解
- 同步必须等待前面的任务完成才能继续后面的任务
- 同步必须等待前面的任务完成才能继续后面的任务
- 异步不受当前任务的影响
- 异步不受当前任务的影响
拿排队举例
- 同步在银行排队时只有等到你了才能够去处理业务
- 同步在银行排队时只有等到你了才能够去处理业务
- 异步在排队的时候可以玩手机
- 异步在排队的时候可以玩手机
### 异步更新网站
@ -23,11 +20,9 @@
试想一下如果没有异步刷新的话每次点击加载更多网页都要重新刷新体验就太糟糕了
web前端里的异步更新就要用到 Ajax很多人说如果没有 Ajax就没有互联网的今天
关于同步和异步的更详细介绍可以参考本项目的另外一篇文章05-JavaScript基础异步编程和Ajax/01-单线程和异步
web 前端里的异步更新就要用到 Ajax很多人说如果没有 Ajax就没有互联网的今天
关于同步和异步的更详细介绍可以参考本项目的另外一篇文章05-JavaScript 基础异步编程和 Ajax/01-单线程和异步
## Ajax
@ -37,80 +32,127 @@ web前端里的异步更新就要用到 Ajax。很多人说如果没有 Aj
AjaxAsynchronous Javascript And XML异步 JavaScript XML它并不是凭空出现的新技术而是对于现有技术的结合Ajax 的核心是 js 对象**XMLHttpRequest**
### Ajax原理发送 Ajax 请求的五个步骤
### Ajax 原理发送 Ajax 请求的五个步骤
> 其实也就是 使用 XMLHttpRequest 对象的五个步骤
我们先回忆一下一个完整的HTTP请求需要的是
我们先回忆一下一个完整的 HTTP 请求需要的是
- 请求的网址请求方法get/post
- 请求的网址请求方法 get/post
- 提交请求的内容数据请求主体等
- 提交请求的内容数据请求主体等
- 接收响应回来的内容
- 接收响应回来的内容
发送 Ajax 请求的五个步骤
1创建异步对象 XMLHttpRequest 对象
2使用open方法设置请求参数`open(method, url, async)`参数解释请求的方法请求的url是否异步
2使用 open 方法设置请求参数`open(method, url, async)`参数解释请求的方法请求的 url是否异步第三个参数如果不写则默认为 true
3发送请求`send()`
4注册事件注册onreadystatechange事件状态改变时就会调用
4注册事件注册 onreadystatechange 事件状态改变时就会调用
如果要在数据完整请求回来的时候才调用我们需要手动写一些判断的逻辑
5服务端响应获取返回的数据
### Ajax 请求get 请求举例
## 手写 Ajax
### 手写第一个 Ajax 请求
get 请求
```js
//【发送ajax请求需要五步】
//1创建XMLHttpRequest对象
var xmlhttp = new XMLHttpRequest();
//2设置请求的参数。包括请求的方法、请求的url。
xmlhttp.open('get', '02-ajax.php');
//3发送请求
xmlhttp.send();
//4注册事件。 onreadystatechange事件状态改变时就会调用。
//如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。
xmlhttp.onreadystatechange = function () {
// 为了保证 数据 完整返回,我们一般会判断 两个值
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// 如果能够进入这个判断,说明数据请求成功了
//5服务端相应在注册的事件中获取返回的内容并显示在页面上
console.log('数据返回成功');
// 数据是保存在 异步对象的 属性中
console.log(JSON.stringify(xmlhttp.responseText));
}
};
```
post 请求
```js
//1异步对象
var xmlhttp = new XMLHttpRequest();
//2设置请求参数。包括请求的方法、请求的url。
xmlhttp.open('post', '02.post.php');
// 如果想要使用post提交数据,必须添加此行
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//3发送请求
xmlhttp.send('name=fox&age=18');
//4注册事件
xmlhttp.onreadystatechange = function () {
//5服务端相应
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
};
```
### 封装Ajax请求重要
todo
## Ajax 请求举例
### Ajax 请求get 请求举例
1index.html
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Ajax 发送 get 请求</h1>
<input type="button" value="发送get_ajax请求" id='btnAjax'>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<h1>Ajax 发送 get 请求</h1>
<input type="button" value="发送get_ajax请求" id="btnAjax" />
<script type="text/javascript">
// 绑定点击事件
document.querySelector('#btnAjax').onclick = function () {
// 发送ajax 请求 需要 五步
// 1创建XMLHttpRequest对象
var xmlhttp = new XMLHttpRequest();
// 2设置请求的参数。包括请求的方法、请求的url。
xmlhttp.open('get', '02-ajax.php');
// 3发送请求
xmlhttp.send();
//4注册事件。 onreadystatechange事件状态改变时就会调用。
//如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。
xmlhttp.onreadystatechange = function () {
// 为了保证 数据 完整返回,我们一般会判断 两个值
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
// 如果能够进入这个判断,说明数据请求成功了
// 5在注册的事件中获取返回的内容并显示在页面上
console.log('数据返回成功');
// 数据是保存在 异步对象的 属性中
console.log(xmlhttp.responseText);
// 显示在页面上
document.querySelector('h1').innerHTML = xmlhttp.responseText;
}
}
}
</script>
</body>
<script type="text/javascript">
// 绑定点击事件
document.querySelector('#btnAjax').onclick = function () {
// 发送ajax 请求需要五步
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('get', '02-ajax.php');
xmlhttp.send();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log('数据返回成功');
console.log(xmlhttp.responseText);
// 显示在页面上
document.querySelector('h1').innerHTML = xmlhttp.responseText;
}
};
};
</script>
</body>
</html>
```
@ -133,36 +175,28 @@ index.html
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Ajax 发送 get 请求</h1>
<input type="button" value="发送put_ajax请求" id='btnAjax'>
<script type="text/javascript">
// 异步对象
var xhr = new XMLHttpRequest();
// 设置属性
xhr.open('post', '02.post.php');
// 如果想要使用post提交数据,必须添加此行
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// 将数据通过send方法传递
xhr.send('name=fox&age=18');
// 发送并接受返回值
xhr.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
</script>
</body>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<h1>Ajax 发送 get 请求</h1>
<input type="button" value="发送put_ajax请求" id="btnAjax" />
<script type="text/javascript">
// 发送ajax 请求需要五步
var xhr = new XMLHttpRequest();
xhr.open('post', '02.post.php');
// 如果想要使用post提交数据,必须添加此行
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('name=fox&age=18');
xhr.onreadystatechange = function () {
// 这步为判断服务器是否正确响应
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
</script>
</body>
</html>
```
@ -175,33 +209,33 @@ index.html
发送请求的方法
```javascript
open(method, url, async);
open(method, url, async);
```
参数解释
- method请求的类型GET POST
- method请求的类型GET POST
- url文件在服务器上的位置
- url文件在服务器上的位置
- asynctrue异步 false同步
- asynctrue异步 false同步
另外还有个方法仅用于 POST 请求
```javascript
send(string);
send(string);
```
### POST请求时注意
### POST 请求时注意
如果想让 form 表单提交数据那样使用POST请求就需要使用 XMLHttpRequest 对象的 setRequestHeader()方法 来添加 HTTP 然后在 send() 方法中添加想要发送的数据
如果想让 form 表单提交数据那样使用 POST 请求就需要使用 XMLHttpRequest 对象的 setRequestHeader()方法 来添加 HTTP 然后在 send() 方法中添加想要发送的数据
```javascript
xmlhttp.open("POST","ajax_test.php", true);
xmlhttp.open('POST', 'ajax_test.php', true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send("name=smyhvae&age=27");
xmlhttp.send('name=smyhvae&age=27');
```
### onreadystatechange 事件
@ -210,424 +244,86 @@ index.html
readyState存有 XMLHttpRequest 的状态 0 4 发生变化
- 0: 请求未初始化
- 0: 请求未初始化
- 1: 服务器连接已建立
- 1: 服务器连接已建立
- 2: 请求已接收
- 2: 请求已接收
- 3: 请求处理中
- 3: 请求处理中
- 4: 请求已完成且响应已就绪
- 4: 请求已完成且响应已就绪
status
- 200: "OK"
- 200: "OK"
- 404: 未找到页面
- 404: 未找到页面
onreadystatechange 事件中** readyState 等于 4且状态码为200时表示响应已就绪**
onreadystatechange 事件中** readyState 等于 4且状态码为 200 表示响应已就绪**
### 服务器响应的内容
- responseText获得字符串形式的响应数据
- responseXML获得 XML 形式的响应数据
如果响应的是普通字符串就使用responseText如果响应的是XML使用responseXML
## Ajax 传输 XML
### XML 语法
XMLExtensible Markup Language可扩展标记语言详细语法可以查看[#](http://www.w3school.com.cn/xml/index.asp)。
**1XML声明**
```xml
<?xml version="1.0" encoding="UTF-8"?>
```
第一行的声明指定了XML版本(1.0)以及使用的编码
**2自定义标签**
XML中没有默认的标签所有的标签都是我们自己已定义的例如
```xml
<fox></fox>
<name></name>
```
XML中没有单标签都是双标签
**3根节点**
XML中必须要有一个根节点所有的子节点都放置在根节点下例如
```xml
<root1>
<name></name>
</root1>
```
### XML 解析
因为 XML 就是标签所以我们可以直接用**解析Dom元素**的方法解析 XML
**解析过程**
1html 部分包含 xml
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<person id='personXML'>
<name>fox</name>
<age>18</age>
<skill>小花花</skill>
</person>
</body>
</html>
```
2解析 xml
```html
<script type="text/javascript">
var xmlObj = document.getElementById("personXML");
var name = xmlObj.getElementsByTagName('name')[0].innerHTML;
console.log(name);
</script>
```
### ajax 请求解析xml举例
1get_xml.php里面包含了xml文件
```php
<?php
// 设置 返回的为 xml
header('content-type:text/xml; charset= utf-8');
// 读取xml文件 并返回
echo file_get_contents('info/star.xml');
?>
```
上方代码解释
- php 自带了 读取 xml 文件的方法
- php 如果要使用xml传输数据则需要使用header()设置返回的内容为xml
2get_xml.htmlAjax 请求获取并解析xml
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="button" value="获取XMl数据" id='getXML'>
</body>
</html>
<script type="text/javascript">
document.querySelector('#getXML').onclick = function () {
var ajax = new XMLHttpRequest();
ajax.open('get','get_XMl.php');
ajax.send();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status==200) {
// 如果 返回的是 xml文件
console.log(ajax.responseText);
// 异步 对象中 有另外一个属性 用来专门获取 xml
// xml对象 在浏览器段 就是一个 document对象
// 解析时 可以直接使用 querySelector 或者 getElementById等等 document对象 有的语法
console.log(ajax.responseXML);
console.log(ajax.responseXML.querySelector('kuzi').innerHTML);
// 下面这个 页面文档对象 如果要获取某个标签
console.log(window.document);
}
}
}
</script>
```
## Ajax 传输 JSON
### JSON 的语法
JSON(JavaScript Object Notation)是ECMAScript的子集作用是进行数据的交换语法更为简洁网络传输机器解析都更为迅速
语法规则
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
数据类型
- 数字整数或浮点数
- 字符串在双引号中
- 逻辑值true false
- 数组在方括号中
- 对象在花括号中
- null
示例
```json
// 对象
{
"name":"fox",
"age":"18",
"sex":"true",
"car":null
}
// 数组
[
{
"name":"小小胡",
"age":"1"
},
{
"name":"小二胡",
"age":"2"
}
]
```
### JavaScript中json 字符串 <--> js 对象
基本上所有的语言都有** json 字符串转化为该语言对象**的语法
比如在 js中
- JSON.parse()将JSON字符串转化为 js 对象例如
```javascript
// 将 JSON 字符串格式化为 js 对象
var jsObj = JSON.parse(ajax.responseText);
```
- JSON.stringify() JS 对象转化为JSON字符串例如
```javascript
var Obj = {
name: "fox",
age: 18,
skill: "撩妹"
};
console.log(Obj);
// 将 js 对象格式化为 JSON 字符串
var jsonStr = JSON.stringify(Obj);
```
### PHP中json 字符串 <--> js 对象
- **json_decode()**方法`json`字符串转化为变量
- **json_encode()**方法将变量转化为`json`字符串
代码举例
```php
<?php
header("Content-Type:text/html;charset=utf-8");
// json字符串
$jsonStr = '{"name":"itcast","age":54,"skill":"歌神"}';
// 字符串转化为 php对象
print_r(json_decode($jsonStr));
echo "<br>";
// php数组
$arrayName = array('name' =>'littleFox' ,'age' => 13 );
// php对象 转化为 json字符串
print_r(json_encode($arrayName));
?>
```
输出结果
```bash
stdClass Object ( [name] => itcast [age] => 54 [skill] => 歌神 )
{"name":"littleFox","age":13}
```
### ajax 请求解析 json举例
1Person.json:
```json
{
"name":"小强",
"skill":"砍树",
"friend":"老板"
}
```
2myJson.php
```php
<?php
// 读取json文件 并返回即可
echo file_get_contents('info/Person.json');
?>
```
3getJson.html
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>获取 json 数据</h1>
<input type="button" value="获取json" id='btnJson'>
</body>
</html>
<script type="text/javascript">
// 获取的是一个 如果要获取多个
// document.querySelectorAll(selector)
document.querySelector("#btnJson").onclick = function () {
var ajax = new XMLHttpRequest();
ajax.open('get','myJson.php');
ajax.send();
ajax.onreadystatechange = function () {
if (ajax.readyState==4&&ajax.status==200) {
// json 字符串 是字符串 所以我们可以 通过 responseText获取
console.log(ajax.responseText);
// 转化为 js对象
var jsObj = JSON.parse(ajax.responseText);
console.log(jsObj);
// 拼接ul s
var str = '';
str+='<ul>';
str+='<li>'+jsObj.name+'</li>';
str+='<li>'+jsObj.skill+'</li>';
str+='<li>'+jsObj.friend+'</li>';
str+='</ul>';
// 设置到界面上
document.body.innerHTML = str;
}
}
}
</script>
```
演示效果
![](http://img.smyhvae.com/20180228_1740.gif)
- responseText获得字符串形式的响应数据
- responseXML获得 XML 形式的响应数据
如果响应的是普通字符串就使用 responseText如果响应的是 XML使用 responseXML
## jQuery 中的 Ajax
JQuery作为最受欢迎的js框架之一常见的Ajax已经帮助我们封装好了只需要调用即可更为详细的api文档可以查阅[w3cSchool_JQueryAjax](http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp)
JQuery 作为最受欢迎的 js 框架之一常见的 Ajax 已经帮助我们封装好了只需要调用即可更为详细的 api 文档可以查阅[w3cSchool_JQueryAjax](http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp)
格式举例
```javascript
$.ajax({
url:'01.php',//请求地址
data:'name=fox&age=18',//发送的数据
type:'GET',//请求的方式
success:function (argument) {},// 请求成功执行的方法
beforeSend:function (argument) {},// 在发送请求之前调用,可以做一些验证之类的处理
error:function (argument) {console.log(argument);},//请求失败调用
})
url: '01.php', //请求地址
data: 'name=fox&age=18', //发送的数据
type: 'GET', //请求的方式
success: function (argument) {}, // 请求成功执行的方法
beforeSend: function (argument) {}, // 在发送请求之前调用,可以做一些验证之类的处理
error: function (argument) {
console.log(argument);
}, //请求失败调用
});
```
代码举例
1index.html
```html
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jquery-ajax</title>
</head>
<body>
<input type="button" value="点击" id="btn">
<div id="showInfo"></div>
<script type="text/javascript" src="jquery-1.11.2.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
$.ajax({
url:"data.php",
dataType:"text",
type:"get",
success:function(data){
alert(data);
//$("#showInfo").html(data);
},
error:function(e){
console.log(e);
}
});
});
});
</script>
</body>
<head>
<meta charset="UTF-8" />
<title>jquery-ajax</title>
</head>
<body>
<input type="button" value="点击" id="btn" />
<div id="showInfo"></div>
<script type="text/javascript" src="jquery-1.11.2.js"></script>
<script type="text/javascript">
$(function () {
$('#btn').click(function () {
$.ajax({
url: 'data.php',
dataType: 'text',
type: 'get',
success: function (data) {
alert(data);
//$("#showInfo").html(data);
},
error: function (e) {
console.log(e);
},
});
});
});
</script>
</body>
</html>
```
@ -644,15 +340,10 @@ echo $text;
```
## 创作不易赞赏作者
如果你觉得本教程对你有帮助或者你想催更不妨赞赏一下
你的赞赏和认可是我最大的动力
![](http://img.smyhvae.com/20210510_2100.jpg)

View File

@ -0,0 +1,326 @@
## Ajax 传输 JSON
### JSON 的语法
JSON(JavaScript Object Notation) ECMAScript 的子集作用是进行数据的交换语法更为简洁网络传输机器解析都更为迅速
语法规则
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
数据类型
- 数字整数或浮点数
- 字符串在双引号中
- 逻辑值true false
- 数组在方括号中
- 对象在花括号中
- null
示例
```json
// 对象
{
"name":"fox",
"age":"18",
"sex":"true",
"car":null
}
// 数组
[
{
"name":"小小胡",
"age":"1"
},
{
"name":"小二胡",
"age":"2"
}
]
```
### JavaScript json 字符串 <--> js 对象
基本上所有的语言都有** json 字符串转化为该语言对象**的语法
比如在 js
- JSON.parse() JSON 字符串转化为 js 对象例如
```javascript
// 将 JSON 字符串格式化为 js 对象
var jsObj = JSON.parse(ajax.responseText);
```
- JSON.stringify() JS 对象转化为 JSON 字符串例如
```javascript
var Obj = {
name: 'fox',
age: 18,
skill: '撩妹',
};
console.log(Obj);
// 将 js 对象格式化为 JSON 字符串
var jsonStr = JSON.stringify(Obj);
```
### PHP json 字符串 <--> js 对象
- **json_decode()**方法`json`字符串转化为变量
- **json_encode()**方法将变量转化为`json`字符串
代码举例
```php
<?php
header("Content-Type:text/html;charset=utf-8");
// json字符串
$jsonStr = '{"name":"itcast","age":54,"skill":"歌神"}';
// 字符串转化为 php对象
print_r(json_decode($jsonStr));
echo "<br>";
// php数组
$arrayName = array('name' =>'littleFox' ,'age' => 13 );
// php对象 转化为 json字符串
print_r(json_encode($arrayName));
?>
```
输出结果
```bash
stdClass Object ( [name] => itcast [age] => 54 [skill] => 歌神 )
{"name":"littleFox","age":13}
```
### ajax 请求解析 json举例
1Person.json:
```json
{
"name": "小强",
"skill": "砍树",
"friend": "老板"
}
```
2myJson.php
```php
<?php
// 读取json文件 并返回即可
echo file_get_contents('info/Person.json');
?>
```
3getJson.html
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<h1>获取 json 数据</h1>
<input type="button" value="获取json" id="btnJson" />
</body>
</html>
<script type="text/javascript">
// 获取的是一个 如果要获取多个
// document.querySelectorAll(selector)
document.querySelector('#btnJson').onclick = function () {
var ajax = new XMLHttpRequest();
ajax.open('get', 'myJson.php');
ajax.send();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
// json 字符串 是字符串 所以我们可以 通过 responseText获取
console.log(ajax.responseText);
// 转化为 js对象
var jsObj = JSON.parse(ajax.responseText);
console.log(jsObj);
// 拼接ul s
var str = '';
str += '<ul>';
str += '<li>' + jsObj.name + '</li>';
str += '<li>' + jsObj.skill + '</li>';
str += '<li>' + jsObj.friend + '</li>';
str += '</ul>';
// 设置到界面上
document.body.innerHTML = str;
}
};
};
</script>
```
演示效果
![](http://img.smyhvae.com/20180228_1740.gif)
## Ajax 传输 XML
### XML 语法
XMLExtensible Markup Language可扩展标记语言详细语法可以查看[#](http://www.w3school.com.cn/xml/index.asp)。
**1XML 声明**
```xml
<?xml version="1.0" encoding="UTF-8"?>
```
第一行的声明指定了 XML 版本(1.0)以及使用的编码
**2自定义标签**
XML 中没有默认的标签所有的标签都是我们自己已定义的例如
```xml
<fox></fox>
<name></name>
```
XML 中没有单标签都是双标签
**3根节点**
XML 中必须要有一个根节点所有的子节点都放置在根节点下例如
```xml
<root1>
<name></name>
</root1>
```
### XML 解析
因为 XML 就是标签所以我们可以直接用**解析 Dom 元素**的方法解析 XML
**解析过程**
1html 部分包含 xml
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<person id="personXML">
<name>fox</name>
<age>18</age>
<skill>小花花</skill>
</person>
</body>
</html>
```
2解析 xml
```html
<script type="text/javascript">
var xmlObj = document.getElementById('personXML');
var name = xmlObj.getElementsByTagName('name')[0].innerHTML;
console.log(name);
</script>
```
### ajax 请求解析 xml举例
1get_xml.php里面包含了 xml 文件
```php
<?php
// 设置 返回的为 xml
header('content-type:text/xml; charset= utf-8');
// 读取xml文件 并返回
echo file_get_contents('info/star.xml');
?>
```
上方代码解释
- php 自带了 读取 xml 文件的方法
- php 如果要使用 xml 传输数据则需要使用 header()设置返回的内容为 xml
2get_xml.htmlAjax 请求获取并解析 xml
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<input type="button" value="获取XMl数据" id="getXML" />
</body>
</html>
<script type="text/javascript">
document.querySelector('#getXML').onclick = function () {
var ajax = new XMLHttpRequest();
ajax.open('get', 'get_XMl.php');
ajax.send();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
// 如果 返回的是 xml文件
console.log(ajax.responseText);
// 异步 对象中 有另外一个属性 用来专门获取 xml
// xml对象 在浏览器段 就是一个 document对象
// 解析时 可以直接使用 querySelector 或者 getElementById等等 document对象 有的语法
console.log(ajax.responseXML);
console.log(ajax.responseXML.querySelector('kuzi').innerHTML);
// 下面这个 页面文档对象 如果要获取某个标签
console.log(window.document);
}
};
};
</script>
```

View File

@ -1,7 +1,6 @@
## 函数封装
ajax_tool.js
@ -233,8 +232,4 @@ test_post.php
echo $_POST['friend'];
?>
```
工程文件
- 2018-02-28-Ajax请求封装.rar
```