前端工程化前置

AJAX是异步的JavaScript和xML(==A==synchronous==J==avaScript==…

#工程化

AJAX是异步的JavaScript和xML(AsynchronousJavaScriptAndXML)。简单点说,就是使用 XMLHttpRequest对象与服务器通信。它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJA×最吸引人的就是它的“异步”特性,也就是说它可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。

怎么用AJAX?

1.先使用axios库,与服务器进行数据通信 基于XMLHttpRequest封装、代码简单、月下载量在14亿次 Vue、React项目中都会用到axios 2.再学习XMLHttpReguest对象的使用,了解AJAX底层原理

语法:

  1. 引入 axios.js: https://cdn.isdelivr.net/npm/axios/dist/axios.min.js

  2. 使用axios函数

    • 传入
    • 再用.then回调函数接收结果,并做后续处理

配置对象

如果是get请求,参数配置为

{
	url:"",
	method:"get",
	params:{
		usr:"jbsd",
		pwd:"schs"
	}
}

如果是post请求,请求参数应该这么写

{
	url:"",
	method:"get",
	data:{
		usr:"jbsd",
		pwd:"schs"
	}
}

axios错误处理

语法:在then方法的后面,通过点语法调用catch方法,传入回调函数并定义形参

form-serialize插件

作用:快速收集表单元素的值

AjAx原理-XMLHttpRequest

定义: XMLHttpRequest(XHR)对象用于与服务器交互。通过XMLHttpRequest可以在不刷新页面的情况下请求特 定URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest在 AJAX编程中被大量使用。 关系:axios内部采用xMLHttpRequest与服务器交互

使用XMLHttpRequest 步骤:

  1. 创建XMLHttpRequest对象
  2. 配置请求方法和请求url地址
  3. 监听loadend事件,接收响应结果
  4. 发起请求
const xhr = new XMLHttpRequest()
xhr.open('请求方法','请求url网址')
xhr.addEventListener("load",()=>{
	console.log(xhr.response)
})
xhr.send()

XMLHttpRequest-数据提交

需求:通过XHR提交用户名和密码,完成注册功能核心: 请求头设置Content-Type:application/jsor

请求体携带JSON字符串

Promise

Promise对象用于表示一个异步操作的最终完成(或失败)及其结果值。

Promise-链式调用

概念:依靠then()方法会返回一个新生成的Promise对象特性,继续串联下一环任务,直到结束 细节:then()回调函数中的返回值,会影响新生成的Promise对象最终状态和结果 好处:通过链式调用,解决回调函数嵌套问题

async函数和await

定义: async函数是使用async关键字声明的函数。async函数是AsyncFunction构造函数的实例,并且其中允许使用await关键字。asyncawait关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。

Promise.all 静态方法

概念:合并多个Promise对象,等待所有同时成功完成(或某一个失败),做后续逻辑

跨域问题

在前端发出Ajax请求的时候,有时候会产生跨域问题

针对以上问题,本文提供两种解决方案,CORS中间件和JSONP方法。

在具体介绍解决方法之前,我们先明确以下前提条件:

1、这两个方法都需要通过后端修改接口情况,无法单独通过前端解决跨域问题。

2、什么是跨域?什么情况会出现跨域?

答:当浏览器发起Ajax请求时,如果所请求的url和当前的url的协议、域名、端口存在任意不同,就会产生跨域问题。比如我在这个地址file:///C:/Users/%E8%8A%.html,协议为file协议,如果请求http协议的文件,自然就会出现跨域问题。

3、当我们使用script、img、herf加载内容时不会出现跨域问题

Node.js

Webpack

评论

评论加载中……