AJAX

  • 1.概述
    • 1.AJAX
    • 2.XML
    • 3.跨域问题
    • 4.HTTP协议
    • 5.环境准备
  • 2.使用
    • 1.请求基本操作
    • 2.设置参数
    • 3.发送POST请求
    • 4.响应JSON数据
    • 5.请求超时问题
    • 6.取消请求
    • 7.请求重复发送问题
    • 8.使用fetch函数发送ajax请求
  • 3.jQuery中使用ajax
    • 1.get请求
    • 2.post请求
    • 3.通用模式
  • 4.axios使用ajax
  • 5.跨域问题
    • 1.同源策略
    • 2.如何解决跨域

1.概述

1.AJAX

AJAX全称为Asynchronous Javascript And XML (异步的JS和XML)。通过AJAX可以在浏览器中发送异步请求,最大的优势是不用刷新就能获取数据

优点:

  • 可以无需刷新页面就与服务器端进行通信;
  • 允许你根据用户事件来更新部分页面内容。

缺点:

  • 没有浏览历史,不能回退;
  • 存在跨域问题;
  • SEO不友好(搜索引擎优化,爬虫爬不到)。

2.XML

XML可扩展标记语言,用来传输和存储数据。XML和HTML类似,但HTML中是预定于标签,而XML都是自定义标签。现在已经被JSON取代了。

3.跨域问题

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。localhost和127.0.0.1虽然都指向本机,但也属于跨域。

跨域会阻止接口的请求,会阻止Dom的操作。

4.HTTP协议

HTTP(hypetext transport protovol)协议,超文本传输协议,规定了浏览器与万维网服务器之间互相通信的规则。

请求报文

  • 行:请求方式、URL路径、HTTP协议版本
  • 头:Host、Cookie、Content-type、User-Agent
  • 空行

响应报文

  • 行:协议版本、响应状态码、响应状态字符串
  • 头:Content-Type、Content-length、Content-encoding
  • 空行
  • 体:html源码

5.环境准备

下载node.js 和express:操作链接

2.使用

1.请求基本操作

//获取元素
const btn=document.getElementByTagName('button')[0];
//绑定事件
btn.onclick=function(){//1.创建对象const xhr=new XMLHttpRequest();//2.初始化 设置请求方法和urlxhr.open('GET','http://127.0.0.1:8000/路径');//3.发送xhr.send();//4.事件绑定 处理服务器端返回结果//readystate 是xhr对象中的属性,表示状态0 1 2 3 4//0 未初始化 1 open调用完毕 2 send调用完毕 3 服务器返回部分结果 4 返回所有结果xhr.onreadystatechange=function(){if(xhr.readystate===4){if(xhr.status>=200&&xhr.status<300){result.innerHTML=xhr.response;}}}
}

2.设置参数

在url中之间设置。

3.发送POST请求

xhr.open('POST','http://127.0.0.1:8000/路径+参数');
//设置请求头
xhr.setRequestHeader('type','content');
//设置请求体
xhr.send('请求体');

4.响应JSON数据

服务器端发送

const data={name:'hh'};
let str=JSON.stringify(data);
response.send(str);

客户端接收

//手动转换
let data=JSON.parse(xhr.response);
console.log(data.name);
//自动转换
console.log(xhr.response.name);

5.请求超时问题

//1. 2s内未收到结果就取消
xhr.timeout=2000;
//2. 设置超时回调,超时后调用该函数
xhr.ontimeout=function(){}//网络异常回调
xhr.onerror=function(){}

6.取消请求

xhr.abort();

7.请求重复发送问题

//标识是否正在发送ajax请求
let isSending=false;//发送后将isSending 改为true//绑定事件
xhr.onreadystatechange=function(){if(xhr.readyState===4){isSending=false;}
}

8.使用fetch函数发送ajax请求

fetch('url',{method:'POST',//请求头headers:{name:'ahh'},//请求体body:''
}).then(response=>{return response.text();//response.json();
});

3.jQuery中使用ajax

1.get请求

$.get(url,[data],[callback],[type])

  • url:请求的url地址
  • data:携带的参数
  • callback:载入成功时的回调函数
  • type:设置返回内容格式

2.post请求

$.post(url,[data],[callback],[type])

  • url:请求的url地址
  • data:携带的参数
  • callback:载入成功时的回调函数
  • type:设置返回内容格式

3.通用模式

$('button').eq(0).click(function(){$.ajax({url:'',data:{a:100,b:200},type:'GET'  //'POST',dataType:'json',success:function(data){},timeout:2000,error:function(){}})
})

4.axios使用ajax

5.跨域问题

1.同源策略

浏览器的一种安全策略,同源:协议、域名、端口号必须完全相同。

违背同源策略就是跨域。

2.如何解决跨域

  1. JSONP:只支持get请求。

有些标签具有跨域能力,img、link、iframe、script,JSONP就是使用script标签的跨域能力来发送请求的。
script发送请求应该返回js语句

jQuery发送jsonp请求

$('button').eq(0).click(function(){$.getJSON('url',function(data){})
})
  1. CORS:跨域资源共享

不需要在客户端做任何特殊操作,完全在服务器中进行处理,支持get和post请求。

CORS通过设置一个响应头来告诉浏览器,该请求允许跨域。

response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Header","*");
response.setHeader("Access-Control-Allow-Method","*");
//*:全部
// 也可以写一个具体的url地址。

前端开发学习之【AJAX】相关推荐

  1. 前端开发学习及工具网站(持续更新)

    前端开发学习及工具网站 该文章主要是记录前端开发中好的学习网站或者工具网站 大部分实用网站来源抖音鱼皮大佬分享,这里分享给大家 1.w3cschool(编程狮) 这个网站适合0基础学前端的同学,内容简 ...

  2. 2018web前端学习路线,详谈web前端开发学习路线

    近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的发展前景却是非常的可观,好前景 ...

  3. 重磅推出:分享阿里云大学前端开发学习路线链接

    重磅推出:分享阿里云大学前端开发学习路线链接 这是一份阿里云大学推出前端开发学习路线,适合入门.也适合刚入职场一两年的小伙伴,来一个基础知识进行加深视频学习.内容言简意赅,通过demo练习等来理解学习 ...

  4. 送给大家一套完整的web前端开发学习路线

    本文来源:千锋web前端开发 近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的 ...

  5. ul 原点显示_web前端开发学习教程,CSS HTML - ul li列表原点如何相连

    原标题:web前端开发学习教程,CSS HTML - ul li列表原点如何相连 目前我列出两个方案,很详细,希望可以帮助到有疑问的朋友. 方案一: html 参与考试<第一期模拟考试> ...

  6. 老前端工程师现身说法,2021Web前端开发学习路线图

    导读:2021Web前端开发学习路线图 三大件学习 现在每年依旧有很多初级入门的前端开发.所以对初入门的朋友也给出一点意见. 刚入门的朋友,我觉得不应该一开始就学习像Vue.TypeScript.We ...

  7. 前端开发学习路线图,完整学习教程+工具+框架

    回看近年的前端发展,不管是之前的散装前端时代,还是后来插件化.模块化的演进,亦或是现如今如火如荼的前端工程化迭代,发展速度实在是太快了,各种框架层出不穷,这些难免会让我们这些学习者眼花缭乱,满腹疑团. ...

  8. 前端开发学习笔记(一):HTML

    前端开发学习笔记(一):HTML 文章目录 前端开发学习笔记(一):HTML 一. HTML的文档结构 二.标签属性 2.1. 标签属性 2.2. 文字格式化标签 2.3. html实体转义 三. t ...

  9. Web前端开发学习【1】-----大学生如何购买学生版的阿里云服务器,或免费领取半年的阿里云服务器

    Web前端开发学习[1]-----大学生如何购买学生版的阿里云服务器,或免费领取半年的阿里云服务器目录 一.进入阿里云官网.注册阿里云账号 1.百度搜索关键词[阿里云服务器],然后进入官网 2.免费注 ...

  10. 前端开发学习笔记(一)深入浅出Javascript

    从事开发工作已经有十几年时间了,但一直没有真正涉猎WEB开发,这在当今IT业界听起来有些不可思议哈.从今天开始静下心来,全面深入的学习WEB开发的有关知识.将学习的体会和要点记录下来,以作备忘. 深入 ...

最新文章

  1. 修改Linux系统时间
  2. 链接服务器---无效的产品名称
  3. React全家桶构建一款Web音乐App实战(九):皮肤切换
  4. 外部中断0(含知识点)
  5. SQL ORDER BY Clause
  6. 远程连接linux的mysql_【Linux开启mysql远程连接的设置步骤】 mysql开启远程连接
  7. jQuery中调用方法,动态拼接传字符串参数格式
  8. hdu 4057(ac自动机+状态压缩dp)
  9. Redis-槽道原理
  10. 高斯过程回归预测 C++代码实现
  11. PHP为什么是最好的编程语言?
  12. vscode 程序员鼓励师_把软萌程序猿鼓励师装进VScode里?最强交互彩虹屁,GitHub2.5k星标,爱上写代码...
  13. css中margin和padding设置成百分比时参照物是谁
  14. 【​观察】做好数据到介质的连接者 新数据时代浪潮存储的行与思
  15. 小程序转uni-app——引入组件显示问题
  16. 晚安前学习——第1天
  17. 如何成为一名求伯君式的黑客
  18. hdu 6217 BBP Formula
  19. MATLAB导入Excel时间格式
  20. 4Ps营销理论(The Marketing Theory of 4Ps)

热门文章

  1. java 系统资源不足_atn 编译java提示资源不足
  2. rrt算法流程图_基于采样的路径搜索算法代码实现(RRT和PRM)
  3. 基于XGBoost的句子相似度匹配
  4. java undertow_undertow服务器运行一段时间后就会占用很高的cpu资源
  5. 【每日早报】2019/07/25
  6. 计算机上显示F怎么取消,去掉任务栏安全删除硬件里出现删除硬盘驱动器C,D,E,F和光驱的方法...
  7. java resultmap_Mybatis中强大的resultMap功能介绍
  8. WAMPSERVER修改默认浏览器和编辑器
  9. python三个数输出最小值_从键盘输入三个数,输出其中的最大值和最小值。_学小易找答案...
  10. async await 原理