ajax 无返回_AJAX技术学习
水里的游鱼是缄默沉静的,陆地上的兽类是喧哗的,空中的飞鸟是喧哗着的。人类却兼有海洋的缄默沉静、陆地的喧哗与天空的音乐。
——泰戈尔
佳
著
荐
AJAX技术
AJAX全称为Asynchronous Javascript And XML,即异步的JS和XML;通过AJAX可以在浏览器中向服务端发送异步请求,最大的优势就是:无刷新获取数据。
AJAX的特点
1
ajax
AJAX的优点与缺点
优点:
1、可以无需刷新页面而与服务器端进行通信。
2、允许你根据用户事件来更新部分页面内容。
缺点:
1、没有浏览历史,不能回退
2、存在跨域问题(同源策略)
3、SEO不友好
HTTP请求报文与响应报文结构
2
ajax
请求报文与响应报文
请求报文:
重点是格式与参数
行 POST /s?ie=utf-8 HTTP/1.1
头 Host: atguigu.com
Cookie: name=guigu
Content-type: application/x-www-form-urlencoded
User-Agent: chrome 83
空行
体 username=admin&password=admin
响应报文:
行 HTTP/1.1 200 OK
头 Content-Type: text/html;charset=utf-8
Content-length: 2048
Content-encoding: gzip
空行
体
尚硅谷
AJAX中的GET与POST请求
3
AJAX
GET&POST&请求头设置
GET请求
//创建ajax对象
Const xhr = new XMLHttpRequest();
//初始化,设置请求方法和url
Xhr.open(“GET”,”http://127.0.0.1/server?a=100&b=200&c=300”);
//发送请求
Xhr.send();
//时间绑定,处理服务端返回结果
Xhr.onreadystatechange=function(){
//判断服务端返回了所有的结果
If(xhr.readState==4){
//判断响应状态码
If(xhr.status>=200 && xhr.status <300){
Console,log(xhr.response);
}
}
}
POST请求
//创建ajax对象
Const xhr = new XMLHttpRequest();
//初始化,设置请求方法和url
Xhr.open(“GET”,”http://127.0.0.1/server”);
//发送请求
Xhr.send(“a=3&b=4”);
//时间绑定,处理服务端返回结果
Xhr.onreadystatechange=function(){
//判断服务端返回了所有的结果
If(xhr.readState==4){
//判断响应状态码
If(xhr.status>=200 && xhr.status <300){
Console,log(xhr.response);
}
}
}
请求头设置
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.setRequestHeader("name1","ddd");
自动重启工具nodemon
3
AJAX
nodemon
安装npm install -g nodemon
使用nodemon [your node app]
AJAX中的一系列问题
3
AJAX
iE缓存&超时&网络异常&取消请求&重复发送
Ie中ajax缓存问题解决
初始化对象时路径后面加上时间戳
xhr.open("POST","http://localhost:8000/ie?t="+Date.now());
Ajax请求超时(ontimeout)与网络异常(onerror)
xhr.timeout=2000;
//超时回调
xhr.ontimeout=function(){
alert("你的网络超时了")
}
//网络异常
xhr.οnerrοr=function(){
alert("你断网了")
}
Ajax取消请求
xhr.abort();//执行之后就会取消
Ajax请求重复发送问题
//获取所有button
const btns = document.querySelectorAll("button");
let x = null;
let isSending=false;//判断是否重复点击
btns[0].οnclick=function(){
//判断是否重新请求,是就取消掉
if(isSending) x.abort();
x = new XMLHttpRequest();
//初始化
isSending = true;
x.open("GET","http://localhost:8000/server");
//发送请求
x.send();
x.onreadystatechange=function(){
if(x.readyState === 4){ //判断是否成功发送请求,如果成功就将状态改为false
isSending = false;
}
}
}
//取消发送的请求
btns[1].οnclick=function(){
x.abort();//执行之后就会取消
}
Jqurey发送AJAX请求
3
AJAX
GET&POST&通用方式
$.get(“http://127.0.0.1/server”,{a:100,b:200},function(){
Console.log(data)
},”json”);
POST请求
$.post(“http://127.0.0.1/server”,{a:100,b:200},function(){
Console.log(data)
},”json”);
Jquery通用发送请求方式
$.ajax({
//url
Url:”http://127.0.0.1/server”,
//参数
Data:{a:100,b:200},
//请求类型
Type:”GET/POST”,
//响应体结果
dataType:”json”,
//成功的回调
Sucess:function(data){
Console.log(data);
}
//超时时间
Timeout:2000,
//失败的回调
Error:function(){
Console.log(“错误”)
},
//头信息
Headers:{
C:200,
D:400
}
})
Axios发送AJAX请求
3
AJAX
GET&POST&函数发送
GET请求
Axios.get(“/axios-server”,{
//url参数
Params:{
Id:200,
Vip:7
},
//请求头信息
Headers:{
Name:”mmm”,
Age:20
}
}).then(val =>{
Console.log(val)
})
POST请求
Axios.post(“/axios-server”,{
A:100,
B:200
},{
//url参数
Params:{
Id:200,
Vip:7
},
//请求头信息
Headers:{
Name:”mmm”,
Age:20
}
})
Axios函数发送ajax请求
Axios({
//请求方法
Method:”POST”,
//url
Url:”/axios-server”,
//url参数
Params:{
Vip:10,
Leavel:30
},
//头信息
Headers:{
A:100,
B:200
},
//请求体参数
Data:{
Username:”admin”,
Password:”admin”
}
}).then(response =>{
Console.log(response)
})
Fetch函数发送AJAX请求
3
AJAX
fetch函数
GET&POST请求
fetch(“http://127.0.0.1/fetch-server?vip=10”,{
//请求方法
Method:”GET/POST”,
//请求头
Headers:{
Name:”ad”,
},
//请求体
Body:”username=admin&password=admin”
}).then(response=>{
//如果返回结果是字符串
Return response.text();
//如果返回结果是json格式
Return response.json()
}).then(response=>{
Console.log(response)
})
AJAX中的跨域问题解决
3
AJAX
原生JsonP&Cors
原生jsonp(只支持get请求)
//创建script标签
Const script = document.createElement(“script”);
//设置标签的src属性
Script.src=”http://127.0.0.1:200/srrver”;
//将script插入文档中
Document.body.appendChild(script);
服务端返回函数体(js代码)才行,字符串不行
Cors
//服务端设置一个响应头,设置允许跨域
response.setHeader("Access-Control-Allow-Origin","*");
//服务端设置请求头 所有请求头都可以通过
response.setHeader("Access-Control-Allow-Headers","*");
有些书也许现在你读不懂,但你一定要去读它。时间会告诉你经典存在的意义。
——寄语
扫码关注我们公众号:健伟学习平台更多前端知识推荐给你
ajax 无返回_AJAX技术学习相关推荐
- Ajax学习总结(1)——Ajax实例讲解与技术原理
摘要:AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用 ...
- JQuery 总结(8)Ajax 无刷新技术
Ajax 无刷新技术 [ 有get 和post 一一对应] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $(".delete& ...
- java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...
Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...
- ajax无刷新评论的思路,ajax学习——ajax版无刷新评论(数据库)
//Comment.htm 无刷新评论 type="text/javascript"> //加载评论 $(function() { $.post("GetComme ...
- 解决ajax回调函数无返回值得问题
解决ajax回调函数无返回值得问题 参考文章: (1)解决ajax回调函数无返回值得问题 (2)https://www.cnblogs.com/lzxlfly/p/5879167.html (3)ht ...
- 第八天学习Java的笔记(方法有参无参,有返回值和无返回值)
48天 方法 对比有参数和无参数 package Demo03;/* * 有参数:小括号当中有内容,当一个方法需要一些数据条件才能完成任务的时候,就是有参数 * 例如两个数字相加,必须知道两个数字各是 ...
- java学习(47):带参无返回
//带参无返回值 /*注意: 1. 调用带参方法时,必须保证实参的数量.类型.顺序与形参一一对应 2. 调用方法时,实参不需要指定数据类型 3. 方法的参数可以是基本数据类型,如 int.double ...
- java学习(45):无参无返回
/*如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是:访问修饰符 返回值类型 方法名(参数列表){方法体} 其中: 1. ...
- ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论
基于jquery实现ajax无刷新评论 发布于 2017-03-31 11:26:07 | 75 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框架jQuery是一个 ...
最新文章
- 2019年3月8日比赛(知网是什么)
- 图文剖析:单点登录常见解决方案实现原理
- 正则表达式用单个空格替换多个空格
- 从零开始写一个武侠冒险游戏-6-用GPU提升性能(1)
- 【CentOS 7笔记46】,crondtab任务计划和chkconfig系统服务管理#
- Dapr + .NET 实战(十三)跨语言开发
- vue路由传参两种方式;vue路由传参query与params区别;vue路由跳转的带参与不带参,路由跳转传参方式:name 、 path;
- js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用
- 计算机保研英语,计算机专业保研面试英语自我介绍
- VC知识库1-54期合订本索引文件
- MySQL-Order by用法
- openwrt 进入failsafe模式
- STM32驱动模数转换芯片ADS1120(PT100铂电阻测温度)第2篇
- 益聚星荣:一文看懂,为什么有的投资人讨厌元宇宙,有的却爱死它了
- 多目标跟踪(MOT,Multiple Object Tracking)评价指标
- Linux常用基础命令(巨全)你想要的我都有❀
- Linux防火墙入门:简介(转)
- Yoshua Bengio, Yann LeCun, Geoffrey Hinton 获 2018 年图灵奖...
- 123456123456#5#----com.zzj.DinosourKnown235---前拼show后广--恐龙百科-333333
- ProGuard的作用