二次封装jquery ajax如何实现

这次给大家带来二次封装jquery ajax如何实现,实现二次封装jquery ajax的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

Ajax 的全称是Asynchronous JavaScript and XML 异步的javaScript和XML

AJax所涉及到得技术:

       1.使用CSS和XHTML来表示。

       2. 使用DOM模型来交互和动态显示。

       3.使用XMLHttpRequest来和服务器进行异步通信。(核心)

       4.使用javascript来绑定和调用。

在我们前端处理数据的时候免不了要 ajax 与后台通信, ajax 是通过 XMLHttpRequest 对象与服务器进行通信的, jquery 在 XMLHttpReaquest 的基础上封装了 $.ajax 办法进行通信, $.ajax 办法实用性非常强,又非常简单易用。 本次二次封装 query ajax,参考 express 可以添加中间件处理数据,返回 Promise(Defferd) 对象,减少回调, 写 ajax 更加简洁、优雅。

$.ajax({ url: url, data: data, dataType: 'json', type: 'get', success: new Function(){}, error: new Function(){}, .......})

登录后复制

大部分的时候我们只需要传入 url 和 data, 就可以获取到我们想到的数据了。

痛点

但是在项目中使用 $.ajax, 它还是有一些痛点的

就是现在基本所有项目的 ajax 返回的数据也是进行了二次封装,加入了后台在处理业务逻辑时的信息。

从返回 data, 变成 了 {code: 200, data:{}, err_msg:”}

如果每一个 ajax 请求回来都要判断 code 是否正确再进行业务逻辑处理或者报错提醒, 整个项目下来也太冗余了,

$.ajax({ url: url, data: data, success: function(data){ if(data.code == 200) {  dosomething() } else { alert(data.err_msg); } }})

登录后复制

为了解决这个问题,我们用一个函数再次封装 $.ajax, 把这种正确与否判断再处理业务逻辑或者报错提醒提取出来做成公共的部分。

util.ajax = function(obj, successFn){ $.ajax({ url: obj.url || '/interface', data: obj.data || {}, dataType: obj.dataType || 'json', type: obj.type || 'get', success: function(data){  if (data.code != 200) {  alert(data.err_msg);  } else {  successFn(data.data)  } }, error: function(err){  alert(err) } })}

登录后复制

promise

用 util.ajax 代替 $.ajax 使用就可以减少了业务错误的判断啦。 我们再来完善下, 不使用回调的方式,使用 promise 的方式调用, 减少回调,让代码更清晰。

util.ajax = function(obj) { var deferred = $.Deferred(); $.ajax({  url: obj.url || '/interface',  data: obj.data || {},  dataType: obj.dataType || 'json',  type: obj.type || 'get', }).success(function (data) {  if (data.code != 200) {   deferred.reject(data.err_msg);  } else {   deferred.resolve(data.data)  } }).error(function (err) {  deferred.reject('接口出错,请重试'); }) return deferred.fail(function (err) {  alert(err) });}// 调用var obj = { url: '/interface', data: {  interface_name: 'name',  interface_params: JSON.stringify({}) }};util.ajax(obj) .done(function(data){  dosomething(data) })

登录后复制

中间件

这是一个公共的办法,但是有时候我们需要处理差异化啊, 我们参考 express 引入一个中间件来解决差异化问题。

util.ajax = function(obj, middleware) { var deferred = $.Deferred(); $.ajax({  url: obj.url || '/interface',  data: obj.data || {},  dataType: obj.dataType || 'json',  type: obj.type || 'get', }).success(function (data) {  if (data.code != 200) {   deferred.reject(data.err_msg);  } else {   deferred.resolve(data.data)  } }).error(function (err) {  deferred.reject('接口出错,请重试'); }) // 添加中间件 if(!middleware) {  middleware = function(){}; } return deferred.done(middleware).fail(function (err) {  message({   content: err,   type: 'error',   showLeftIcon: true,   duration: 5000  }); });}// 调用// 调用var obj = { url: '/interface', data: {  interface_name: 'name',  interface_params: JSON.stringify({}) }};var middleware = function(data) { data.forEach(function(item){  item.fullName = item.firstName + item.lastName })}util.ajax(obj, middleware) .done(function(data){  console.log(data.fullName) })

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Ajax方法实现Form表单提交的方法

jQuery怎么验证Ajax提交表单传参

以上就是二次封装jquery ajax如何实现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2777105.html

(0)
上一篇 2025年3月8日 15:00:33
下一篇 2025年3月8日 15:00:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用Ajax时出现乱码怎么解决

    这次给大家带来使用Ajax时出现乱码怎么解决,解决使用Ajax时出现乱码的注意事项有哪些,下面就是实战案例,一起来看一下。 ajax的全称是asynchronous javascript and XML ,它是异步的js和XML。它是局部刷…

    编程技术 2025年3月8日
    000
  • 原生ajax与封装的ajax使用方法(附代码)

    这次给大家带来原生ajax与封装的ajax使用方法(附代码),使用原生ajax与封装的ajax的注意事项有哪些,下面就是实战案例,一起来看一下。 当我们不会写后端接口来测试ajax时,我们可以使用node环境来模拟一个后端接口。 1、模拟后…

    2025年3月8日 编程技术
    200
  • 用history让ajax支持前进/后退/刷新

    这次给大家带来用history让ajax支持前进/后退/刷新,用history让ajax支持前进/后退/刷新的注意事项有哪些,下面就是实战案例,一起来看一下。 前言: 现在前后端基本都是通过ajax实现前后端接口数据的交互,但是,ajax有…

    2025年3月8日
    200
  • AJAX跨域请求数据方法归纳(实战讲解)

    这次给大家带来AJAX跨域请求数据方法归纳(实战讲解),AJAX跨域请求数据的注意事项有哪些,下面就是实战案例,一起来看一下。 由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据  请求数据需要调用浏览器的内置构造函数 XML…

    编程技术 2025年3月8日
    200
  • 使用Ajax安全的登录界面

    这次给大家带来使用Ajax安全的登录界面,使用Ajax登录界面的注意事项有哪些,下面就是实战案例,一起来看一下。 登录界面是信息系统提供的必备的功能,是提供给用户提供维护信息的接口。接下来,我来带领大家打造一个漂亮、安全的登录界面,使用的技…

    2025年3月8日
    200
  • ajax做出带百分比的进度条(附代码)

    最近做项目遇到这样的需求要求当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验,下面通过实例代码给大家介绍基于ajax实现带百分比进度条效果,需要的的朋友参考下吧 需求:当进行文件长传保存等操作时,能在页面…

    2025年3月8日
    200
  • AJAX与JavaScript的使用详解

    这次给大家带来AJAX与JavaScript的使用详解,AJAX与JavaScript使用的注意事项有哪些,下面就是实战案例,一起来看一下。 AJAX不是JavaScript的规范,它只是一个哥们“发明”的缩写:Asynchronous J…

    2025年3月8日
    200
  • JavaScript怎么使用ajax操作表单

    这次给大家带来JavaScript怎么使用ajax操作表单,JavaScript使用ajax操作表单的注意事项有哪些,下面就是实战案例,一起来看一下。 用JavaScript操作表单和操作DOM是类似的,因为表单本身也是DOM树。 不过表单…

    编程技术 2025年3月8日
    200
  • 怎样用Ajax提交表单并接收其中的json数据

    这次给大家带来怎样用Ajax提交表单并接收其中的json数据,用Ajax提交表单并接收其中json数据的注意事项有哪些,下面就是实战案例,一起来看一下。 需求: 实现点击按钮后,数据以表单形式提交至服务器,并接收来自服务器的返回数据。过程中…

    编程技术 2025年3月8日
    200
  • 使用Ajax时Json-lib如何处理

    这次给大家带来使用Ajax时Json-lib如何处理,使用Ajax时Json-lib处理的注意事项有哪些,下面就是实战案例,一起来看一下。 无论是使用ajax还是使用easyui等框架,后台向前台输出数据时都涉及到json处理的问题,这里介…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论