Ajax的特点
注意:在看jQuery的时候,需要先搞明白美元符号在jQuery中的作用
Ajax的优点
(1)可以无刷新页面与服务器端进行通信。
(2)允许你根据用户时间来更新部分页面内容
Ajax的缺点
(1)没有浏览历史
(2)存在跨域问题
(3)对SEO(搜索引擎优化)不友好:网页中的内容,爬虫是爬不到的
HTTP
请求报文
格式和参数
1 2 3 4
| 行:Get / URL路径 协议版本 状态码 头: 空行 体:路径?后面的参数信息
|
响应报文
格式和参数
1 2 3 4
| 行:版本号 状态码 原因(作为数字状态码的补充,是更详细的解释文字) 头: 空行 体:页面的源码
|
GET请求
1 2 3 4 5 6 7 8 9 10 11 12
| const xhr = new XMLHttpRequest(); xhr.open('GET','http://localhost:8080/'); xhr.setRequestHeader('Content-Type',"application/json"); xhr.send();
xhr.onreadystatechange = function(){ if(xhr.readyState === 4){ if(xhr.status >= 200 && xhr.status < 300){ result.innerHTML = xhr.response; } } }
|
POST请求
1 2 3 4 5 6 7 8 9 10 11 12
| const xhr = new XMLHttpRequest(); xhr.open('POST','http://localhost:8080/'); xhr.setRequestHeader('Content-Type',"application/json"); xhr.send("");
xhr.onreadystatechange = function(){ if(xhr.readyState === 4){ if(xhr.status >= 200 && xhr.status < 300){ result.innerHTML = xhr.response; } } }
|
GET、POST请求使用小结
以上两种请求,见过的用法有:
①放在回调函数中
②作为DOM的绑定事件
服务器端响应
服务器端对Ajax响应的数据格式:
①普通字符串
②JSON
③XML数据
JQuery发送Ajax请求
GET请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $('#userName').click() { $.get( 'http://localhost:8080', { a: 100, b: 200, }, function (data) { console.log(data) }, "json" ); }
|
POST请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $('#userName').click() { $.post( 'http://localhost:8080', { a: 100, b: 200, }, function (data) { console.log(data) }, "json" ); }
|
JQuery通用请求方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $.ajax({
url: "http://localhost:8080",
data: {a: 100, b: 200},
type: 'GET', dataType: 'json', success: function (data) { console.log(data); }, timeout: 2000, error: function () { console.log('c出错啦!!'); }, headers: { } })
|
Axios发送Ajax请求请求
Axios 是一个基于 Promise(ES6中用于处理异步的)的 HTTP 库
下面的写法与,jQuery的$作用一样,都是,直接执行了该请求,所以一般,我们常放在函数中,以便需要请求的时候在请求
1 2 3 4 5 6 7 8 9 10 11
| axios(config)
axios.request(config) axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.post(url[, data[, config]]) axios.put(url[, data[, config]]) axios.patch(url[, data[, config]])
|
其中config可以根据需求进行配置(配置大全):
axios请求成功和失败,分别会执行then,catch,详见下例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| axios.get("http://localhost:8080", { params: { id: 100, vip: 7 }, headers: { Accept: "text/html,image/apng" } } ).then(response => { console.log(response); }).catch(error => { console.log(error); })
|
上面的写法与,jQuery的$作用一样,都是,直接执行了该请求,所以一般,我们常放在函数中,以便需要请求的时候在请求
在Vue中,通常Promise和Axios一块使用
案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| new Promise((resolve, reject) => { axios({ url: url method: 'post', data: { } }).then((res) => { resolve(res.data); }).catch(function (error) { reject(error); }); }).then(data => { console.log("执行成功,请求结果为:" + data); }).catch(err => { console.log("执行失败,失败信息为:" + err); });
|