水里的游鱼是缄默沉静的,陆地上的兽类是喧哗的,空中的飞鸟是喧哗着的。人类却兼有海洋的缄默沉静、陆地的喧哗与天空的音乐。

——泰戈尔

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技术学习相关推荐

  1. Ajax学习总结(1)——Ajax实例讲解与技术原理

    摘要:AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用 ...

  2. 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& ...

  3. java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...

    Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...

  4. ajax无刷新评论的思路,ajax学习——ajax版无刷新评论(数据库)

    //Comment.htm 无刷新评论 type="text/javascript"> //加载评论 $(function() { $.post("GetComme ...

  5. 解决ajax回调函数无返回值得问题

    解决ajax回调函数无返回值得问题 参考文章: (1)解决ajax回调函数无返回值得问题 (2)https://www.cnblogs.com/lzxlfly/p/5879167.html (3)ht ...

  6. 第八天学习Java的笔记(方法有参无参,有返回值和无返回值)

    48天 方法 对比有参数和无参数 package Demo03;/* * 有参数:小括号当中有内容,当一个方法需要一些数据条件才能完成任务的时候,就是有参数 * 例如两个数字相加,必须知道两个数字各是 ...

  7. java学习(47):带参无返回

    //带参无返回值 /*注意: 1. 调用带参方法时,必须保证实参的数量.类型.顺序与形参一一对应 2. 调用方法时,实参不需要指定数据类型 3. 方法的参数可以是基本数据类型,如 int.double ...

  8. java学习(45):无参无返回

    /*如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是:访问修饰符 返回值类型 方法名(参数列表){方法体} 其中: 1. ...

  9. ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论

    基于jquery实现ajax无刷新评论 发布于 2017-03-31 11:26:07 | 75 次阅读 | 评论: 0 | 来源: 网友投递 jQuery javascript框架jQuery是一个 ...

最新文章

  1. 2019年3月8日比赛(知网是什么)
  2. 图文剖析:单点登录常见解决方案实现原理
  3. 正则表达式用单个空格替换多个空格
  4. 从零开始写一个武侠冒险游戏-6-用GPU提升性能(1)
  5. 【CentOS 7笔记46】,crondtab任务计划和chkconfig系统服务管理#
  6. Dapr + .NET 实战(十三)跨语言开发
  7. vue路由传参两种方式;vue路由传参query与params区别;vue路由跳转的带参与不带参,路由跳转传参方式:name 、 path;
  8. js事件里面套事件怎么不管用_原生js利用localstorage实现简易TODO list应用
  9. 计算机保研英语,计算机专业保研面试英语自我介绍
  10. VC知识库1-54期合订本索引文件
  11. MySQL-Order by用法
  12. openwrt 进入failsafe模式
  13. STM32驱动模数转换芯片ADS1120(PT100铂电阻测温度)第2篇
  14. 益聚星荣:一文看懂,为什么有的投资人讨厌元宇宙,有的却爱死它了
  15. 多目标跟踪(MOT,Multiple Object Tracking)评价指标
  16. Linux常用基础命令(巨全)你想要的我都有❀
  17. Linux防火墙入门:简介(转)
  18. Yoshua Bengio, Yann LeCun, Geoffrey Hinton 获 2018 年图灵奖...
  19. 123456123456#5#----com.zzj.DinosourKnown235---前拼show后广--恐龙百科-333333
  20. ProGuard的作用

热门文章

  1. AdaBoost基本原理
  2. matlab编程风格
  3. 文巾解题 810. 黑板异或游戏
  4. tableau必知必会之通过服务器视图的全屏实现多媒体展示
  5. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
  6. 聚类算法中各种距离的计算与python的具体实现代码
  7. 第六章 模型的验证、监控与调优
  8. 搜索引擎solr系列---多字段匹配的实现方法
  9. 为电商而生的知识图谱,如何感应用户需求
  10. python 字符串转字节数组