ajax datatype_ajax和axios、fetch的区别

1.jQuery ajax

$.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () {}, error: function () {}});

传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱

JQuery ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持。经过多年的更新维护,真的已经是非常的方便了,优点无需多言;如果是硬要举出几个缺点,那可能只有:

1.本身是针对MVC的编程,不符合现在前端MVVM的浪潮

2.基于原生的XHR开发,XHR本身的架构不清晰。

3.JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)

4.不符合关注分离(Separation of Concerns)的原则

5.配置和调用方式非常混乱,而且基于事件的异步模型不友好。

PS:MVVM(Model-View-ViewModel), 源自于经典的 Model–View–Controller(MVC)模式。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。MVVM 的核心是 ViewModel 层,它就像是一个中转站(value converter),负责转换 Model 中的数据对象来让数据变得更容易管理和使用,该层向上与视图层进行双向数据绑定,向下与 Model 层通过接口请求进行数据交互,起呈上启下作用。View 层展现的不是 Model 层的数据,而是 ViewModel 的数据,由 ViewModel 负责与 Model 层交互,这就完全解耦了 View 层和 Model 层,这个解耦是至关重要的,它是前后端分离方案实施的最重要一环。

如下图所示:

3d3d851ffafe06058cf163b6c74a9928.png

2.axios

axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' }}).then(function (response) { console.log(response);}).catch(function (error) { console.log(error);});

Vue2.0之后,尤雨溪推荐大家用axios替换JQuery ajax,想必让axios进入了很多人的目光中。

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:

1.从浏览器中创建 XMLHttpRequest

2.支持 Promise API

3.客户端支持防止CSRF

4.提供了一些并发请求的接口(重要,方便了很多的操作)

5.从 node.js 创建 http 请求

6.拦截请求和响应

7.转换请求和响应数据

8.取消请求

9.自动转换JSON数据

PS:防止CSRF:就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

3.fetch

try { let response = await fetch(url); let data = response.json(); console.log(data);} catch(e) { console.log("Oops, error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这段代码将从指定路径下读取名为glstat的文件,并使用BinoutReader类解析该文件。以下是更改后的代码: ```python from lsreader import BinoutReader from lsreader import BINOUT_DataType as bdt from lsreader import BINOUT_IdType as bit from lsreader import BINOUT_DataTypeOption as bdto path = r'D:\work\v2\ascii' binout = os.path.join(path, 'glstat') br = BinoutReader(binout) # Time steps tm = br.get_data(bdt.BINOUT_ELOUT_X, idtype=bit.BINOUT_ELOUT_ID_SHELL) num_time_steps = br.get_data(bdt.BINOUT_ELOUT_NUM_TIMESTEP, idtype=bit.BINOUT_ELOUT_ID_SHELL) print("Number of time steps", num_time_steps) strainXX = br.get_data(bdt.BINOUT_ELOUT_STRAIN_XX, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) strainYY = br.get_data(bdt.BINOUT_ELOUT_STRAIN_YY, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) strainZZ = br.get_data(bdt.BINOUT_ELOUT_STRAIN_ZZ, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) strainXY = br.get_data(bdt.BINOUT_ELOUT_STRAIN_XY, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) strainYZ = br.get_data(bdt.BINOUT_ELOUT_STRAIN_YZ, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) strainZX = br.get_data(bdt.BINOUT_ELOUT_STRAIN_ZX, idtype=bit.BINOUT_ELOUT_ID_SHELL, id=76, datatype_option=bdto.BINOUT_DATATYPE_ELOUT_LOWER) ``` 需要注意的是,需要将路径指定为原始字符串,以避免路径中的反斜杠被解释为转义字符。在这个例子中,我们使用了'r'前缀来指定一个原始字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值