AJAX、

文章目录

    • AJAX
      • 1. AJAX简介
        • AJAX特点
      • 2. XML简介
      • 3. AJAX发送get请求
      • 4. post请求设置体参数
      • 5. 设置请求头信息
      • 6. AJAX请求服务端响应json数据
      • 7. ie缓存问题
      • 8. 请求超时问题和网络异常
      • 9. 取消请求
      • 10. 请求重复取消
      • 11. jQuery中的AJAX请求
      • 12. axios函数发送AJAX
      • 使用fetch函数发送AJAX请求
    • 跨域
      • 1. 同源策略
      • 2. 如何解决跨域:
      • 2.1 JSONP
        • JSONP 怎么工作的?
        • JSONP的使用
      • 2.2 jquery完成jsonp请求案例
      • 2.3 CORS
        • CORS怎么工作的?
        • CORS 的使用

AJAX

1. AJAX简介

Ajax全称为Asynchronous Javascript And XML,即异步JS和XML
AJAX不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式

通过Ajax可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据,先展示页面,需要时获取数据

AJAX特点

优点:
可以无刷新页面与服务端进行通信
允许你根据用户事件来更新部分页面内容
缺点:
没有浏览历史,不能回退
存在跨域问题(同源)
SEO不友好(爬虫获取不到信息)

2. XML简介

XML:可扩展标记语言,被设计用来传输和存储数据
XML和HTML类似,不同点:HTML中都是预定义标签,XML中没有预定义标签,全是自定义标签,用来表示一些数据
现在已被JSON取代

3. AJAX发送get请求

  <style>.result{height: 150px;width: 250px;border: 1px solid black;}</style>
</head>
<body><button>发送请求</button><div class="result"></div><script>const btn=document.getElementsByTagName('button')[0];const result=document.querySelector('.result');btn.onclick=function(){// 1.创建对象const xhr=new XMLHttpRequest();// 2.初始化 设置请求方法和urlxhr.open('GET','http://127.0.0.1:3000/server');// 3.发送xhr.send();// 4.时间绑定 处理服务返回的结果// on when 当。。。的时候、readystate是xhr对象的属性表示状态0 1 2 3 4// change改变xhr.onreadystatechange=function(){// 判断(服务器返回了所有结果)if(xhr.readyState===4){// 判断响应状态码 200 404 403 401 500// 2xx成功if(xhr.status>=200 && xhr.status<300){// 处理响应结果 行 头 空行 体// console.log(xhr.status);// console.log(xhr.statusText);// console.log(xhr.getAllResponseHeaders());// console.log(xhr.response);result.innerHTML= xhr.response;}else{}}}}</script>
</body>
</html>

4. post请求设置体参数

在send中设置

xhr.open('POST','http://127.0.0.1:3000/server');
// 3.发送
xhr.send('a=100&b=200&c=300');
xhr.send('a:100&b:200&c:300');

5. 设置请求头信息

在open后面设置
一般把身份校验的信息放在这里传递给服务器,由服务器对参数提取,校验用户身份

xhr.open('POST','http://127.0.0.1:3000/server');
// 设置请求头
xhr.setRequestHeader('','');

6. AJAX请求服务端响应json数据

            // 设置响应体数据类型xhr.responseType='json';result.innerHTML= xhr.response.name;

7. ie缓存问题

IE浏览器会对ajax结果缓存,下一次发送请求时会直接走本地缓存返回的不是浏览器的最新数据

解决:获取当前的时间戳

xhr.open('GET','http://127.0.0.1:3000/ie?t='+Date.now());

8. 请求超时问题和网络异常

        const xhr=new XMLHttpRequest();// 请求超过两秒就取消xhr.timeout=2000;// 超时回调xhr.ontimeout=function(){alert('网络异常,请稍后再试');};// 网络异常回调xhr.onerror=function(){alert('您的网络似乎出了些问题,请稍后再试')};xhr.open('GET','http://127.0.0.1:3000/delay');xhr.send();

9. 取消请求

调用abort方法

<button>点击发送请求</button><button>点击取消</button><script>const btns=document.querySelectorAll('button');let x=null;btns[0].onclick=function(){x=new XMLHttpRequest();x.open('GET','http://127.0.0.1:3000/delay');x.send();}// abortbtns[1].onclick=function(){x.abort();}</script>

10. 请求重复取消

	const btn=document.querySelector('button');let x=null;// 标识变量,判断是否正在发送请求let isSending=false;btn.onclick=function(){// 判断if(isSending) x.abort();//如果正在发送请求,取消上一次x=new XMLHttpRequest();isSending=true;x.open('GET','http://127.0.0.1:3000/delay');x.send();x.onreadystatechange=function(){if(x.readyState===4){isSending=false;}}}

11. jQuery中的AJAX请求

$.get(url, [data], [callback], [type])
url: 请求的URL地址
data: 请求携带的参数
callbac: 载入成功时回调函数
type:设置返回内容格式,xml、html、script、json、text、_default
<button>GET</button><button>POST</button><button>通用型方法ajax</button><script>$('button').eq(0).click(function(){$.get('http://127.0.0.1:3000/jquery',{a:100,b:200},function(data){console.log(data);},'json');})$('button').eq(1).click(function(){//   (请求路径,对象参数,回调data响应体)$.post('http://127.0.0.1:3000/jquery',{a:100,b:200},function(data){console.log(data);});})$('button').eq(2).click(function(){$.ajax({// urlurl:'http://127.0.0.1:3000/jquery',// 参数data:{a:100,b:200},// 请求类型type:'GET',// 响应体格式设置dataType:'json',// 成功回调success:function(data){console.log(data);},// 超时时间timeout:2000,// 错误回调error:function(){console.log('出错了');},headers:{c:300,d:400}})  })</script>

12. axios函数发送AJAX

axios是ajax的工具库

<button>GET</button>
<button>POST</button>
<button>ajax</button>
<script>const btns=document.querySelectorAll('button');axios.defaults.baseURL='http://127.0.0.1:3000';btns[0].onclick=function(){// GET     axios.get('/axios',{// url参数params:{id:100,vip:7},// 请求头信息Headers:{name:'atguigu',age:20}}).then(value=>{// 对数据处理jquery用的是回调函数,axios基于promise方法});};btns[1].onclick=function(){// post 第二个是对象的话会直接作为请求体axios.post('/axios',{// 请求体:username:'admin',password:'admin',},{// url参数// 请求头信息})};btns[2].onclick=function(){axios({// 请求方法method:'POST',// urlurl:'/axios',// url参数// 请求头信息// 请求体参数data:{username:'admin',password:'admin',}}).then(res=>{console.log(res);})}

使用fetch函数发送AJAX请求

fetch号称是AJAX的替代品,是在ES6出现的,使用了ES6中Promise对象

fetch的代码结构笔记ajax简单多了,但fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象

跨域

1. 同源策略

同源策略(Same-Origin Policy)最早由 Netscape 公司提出,是浏览器的一种安全策略。违背同源策略就是跨域

同源:协议、域名、端口号 必须完全相同

AJAX默认遵循同源策略,跨域没有办法直接发送AJAX请求

            // 满足同源策略 url可以简写x.open('GET','/data');

2. 如何解决跨域:

2.1 JSONP

JSONP (JSON with Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来,只支持get请求

JSONP 怎么工作的?

在网页有一些标签天生具有跨域能力,比如:img, link, iframe, script
JSONP就是利用script标签的跨域能力来发送请求的

JSONP的使用
 // 1.创建script标签const script=document.createElement('script');// 2.设置script.src属性script.src='http://127.0.0.1:3000/check-username';// 3.将script标签插入到文档中document.body.appendChild(script);

返回的一般是一串js代码,这样浏览器才能识别解析并执行里面的内容
在这里插入图片描述

2.2 jquery完成jsonp请求案例

在这里插入图片描述

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
</head>
<body><button>点击发送请求</button><div class="result"></div><script>$('button').eq(0).click(function(){// 这里一定要写?callback=?固定写法 // jquery内置一个处理json数据的函数,在服务端调用该函数就不用再特地写出函数名$.getJSON('http://127.0.0.1:3000/jquery-jsonp?callback=?',function(data){$('.result').html(`名称:${data.name}<br>校区:${data.city},`)})})</script>app.all('/jquery-jsonp',(req,res)=>{res.setHeader('Access-Control-Allow-Origin','*')const data={name:'尚硅谷',city:['北京','上海','深圳'],};let str=JSON.stringify(data);let cb=req.query.callback;// jquery内置一个处理json数据的函数,在服务端调用该函数就不用再特地写出函数名res.end(`${cb}(${str})`);
})

2.3 CORS

推荐阅读:
http://www.ruanyifeng.com/blog/2016/04/cors.html
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

CORS (Cross-Origin Resource Sharing), 跨域资源共享。CORS 是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持 get 和 post 等请求。跨域资源共享标准新增了一组 HTTP 首部字段(响应头),允许服务器声明哪些源站通过浏览器有权限访问哪些资源

CORS怎么工作的?

CORS 是通过设置一个响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应以后就会对响应放行。

CORS 的使用

主要是服务端的设置:

rounter.get(“/testAJAX”,function(req, res){

})
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商赛道,云手机到底能不能化繁为简?

当下国内电商背景&#xff1a; 从零售额的数据来看&#xff1a;随着互联网的普及和消费者购物习惯的改变&#xff0c;国内电商市场规模持续扩大。据相关数据显示&#xff0c;网络消费亮点纷呈&#xff0c;一季度全国网上零售额达到了3.3万亿元&#xff0c;同比增长12.4%。这表…

html 段落与排版标记 Web前端开发技术、详细文章(例如)

段落与排版标记 网页的外观是否美观&#xff0c;很大程度上取决于其排版。在页面中出现大段的文字&#xff0c;通常采用分段进行规划&#xff0c;对换行也有极其严格的划分。本节从段落的细节设置入手&#xff0c;利用段落与排版标记自如地处理大段的文字。 段落p标记 在HTM…

探索SRM系统的未来:第一批吃螃蟹的企业如何用API/插件打破效率瓶颈?

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 一、SRM开放集成实践前瞻 二、开放集成渐成系统升级新趋势 降本增效是企业经营的一大永恒话题。通常而言&#xff0c;企业在不同发展阶段中&#xff0c;会使用到不同的管理系统&#xff0c;或产生不同的业务场…

LLM提示词编写技巧-prompt必知必会

LLM大模型提示词编写技巧 提示词的构成要素基础技巧添加明确的语法分解任务指定输出结构 进阶技巧少样本学习 Few Shot零样本学习zero shot思维链提示 CoTCO-STAR框架 高阶技巧自动推理并生成工具 ART推理行动 ReACT 好用的提示词示例绘制工作流程图编写技术博客 参考资料 提示…

热红外传感器

热红外传感器 一、热红外测温原理二、热红外传感器三、MLX90640-D55(MLX90640-BAB)测试 一、热红外测温原理 自然界中当物体的温度高于 绝对零度 时&#xff0c;由于它内部 热运动 的存在,就会不断地向四周辐射电磁波&#xff0c;其中就包含了波段位于0.75&#xff5e;100μm …

K8S认证|CKA题库+答案| 14. 排查故障节点

14、排查集群中的故障节点 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node wk8s master …

LLMjacking:针对云托管AI大模型服务的新型攻击

Sysdig威胁研究团队(TRT)观察到一种新型攻击&#xff0c;命名为LLMjacking。它利用窃取的云凭证&#xff0c;对托管在云上的十个大型语言模型(LLM)服务发起攻击。 这些凭证是从一个流行的目标获得&#xff0c;即运行着一个存在漏洞的Laravel版本&#xff08;CVE-2021-3129&…

常见算法(1)

1.基本查找/顺序查找 核心&#xff1a;从0索引之后挨个查找 实现代码&#xff1a; public class test {public static void main(String [] arg) throws ParseException {int[] arr {121,85,46,15,55,77,63,49};int number55;System.out.println(bashi(arr,number));}publi…

【编译原理复习笔记】正则表达式与自动机

正则表达式 正则表达式是一种用来描述正则语言的更紧凑的表达方法 e.g. r a ( a ∣ b ) ∗ ( ϵ ∣ ( . ∣ ) ( a ∣ b ) ) ra(a|b)^*(\epsilon|(.|\\_ )(a|b)) ra(a∣b)∗(ϵ∣(.∣)​(a∣b)) 正则表达式可以由较小的正则表达式按照特定的规则递归地构建。每个正则表达式定义…

综述 | 走向图对比学习:综述与展望

【摘要】近年来&#xff0c;图的深度学习在各个领域取得了显著的成功。然而&#xff0c;对带注释的图形数据的依赖仍然是一个很大的瓶颈&#xff0c;因为它的成本过高且耗费时间。为了应对这一挑战&#xff0c;图的自监督学习(SSL)得到了越来越多的关注&#xff0c;并取得了重大…

群晖搭建网页版Linux Ubuntu系统并实现远程访问

文章目录 1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 docker-webtop是一个基于Docker的Web桌面应用&#xff0c;它允许用户通过浏览器远…

二十五、openlayers官网示例CustomOverviewMap解析——实现鹰眼地图、预览窗口、小窗窗口地图、旋转控件

官网demo地址&#xff1a; Custom Overview Map 这个示例展示了如何在地图上增加一个小窗窗口的地图并跟随着地图的旋转而旋转视角。 首先加载了一个地图。其中 DragRotateAndZoom是一个交互事件&#xff0c;它可以实现按住shift键鼠标拖拽旋转地图。 const map new Map({int…

客户端Web资源缓存

为了提高Web服务器的性能,其中的一种可以提高Web服务器性能的方法就是采用缓存技术。 1.缓存 1.1.什么是缓存&#xff1f; 如果某个资源的计算耗时或耗资源&#xff0c;则执行一次并存储结果。当有人随后请求该资源时&#xff0c;返回存储的结果&#xff0c;而不是再次计算。…

【Linux】-Flink分布式内存计算集群部署[21]

注意&#xff1a; 本节的操作&#xff0c;需要前置准备好Hadoop生态集群&#xff0c;请先部署好Hadoop环境 简介 Flink同spark一样&#xff0c;是一款分布式内存计算引擎&#xff0c;可以支撑海量数据的分布式计算 Flink在大数据体系同样是明星产品&#xff0c;作为新一代的…

ElasticSearch集群重平衡(Shard allocation)案例分析及性能调优

何谓重平衡 ElasticSearch为了使数据平均分布在集群节点上&#xff0c;重平衡机制会由Master节点决定索引分片具体分配到哪个Data节点以及何时在节点之间迁移分片&#xff0c;使分片在数据大小、分片数量的层面上尽可能均匀分布在集群中的所有Data节点&#xff0c;充分发挥每个…

css - sass or scss ?

总的来说&#xff0c;Sass 和 SCSS 提供的功能是一样的&#xff0c;选择哪种语法主要取决于你的个人或团队的偏好。

4.2 循环语句(for, while)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【Linux取经路】基于信号量和环形队列的生产消费者模型

文章目录 一、POSIX 信号量二、POSIX 信号量的接口2.1 sem_init——初始化信号量2.2 sem_destroy——销毁信号量2.3 sem_wait——等待信号量2.4 sem_post——发布信号量 三、基于环形队列的生产消费者模型3.1 单生产单消费模型3.2 多生产多消费模型3.3 基于任务的多生产多消费模…

期货学习笔记-横盘行情学习1

横盘行情的特征及分类 横盘行情的概念 横盘行情时中继形态的一种&#xff0c;一般常出现在大涨或大跌之后出现横盘行情是对当前趋势行情的修正&#xff0c;是对市场零散筹码的清理&#xff0c;是为了集中筹码更便于后期行情的展开 横盘行情的特征 1.水平运动&#xff1a;该…

【文献阅读】ESG评级不确定性对企业绿色创新的影响研究

ESG评级不确定性对企业绿色创新的影响研究 张张张三丰de思考与感悟 论文内容总结&#xff1a;本文主要是关于ESG评级不确定性&#xff08;也即来自三个评级机构的ESG得分差异&#xff09;&#xff0c;对企业绿色创新的影响。并且有效地区分了创新数量和创新质量。创新数量的是专…