《妙味课堂JS高级专题篇视频教程》将向大家详细介绍javascript,javascript是一种直译式脚本语言,也是一种广泛用于客户端Web开发的脚本语言。目前,被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。

本视频难点在于封装自己的JS库:

1.需求背景

很多时候,我们使用jquery.ajax的方式向后台发送请求,型如$.ajax({

type: "post",

url: "/User/Edit",

data: { data: JSON.stringify(postdata) },

success: function (data, status) {

if (status == "success") {

toastr.success('提交数据成功');

$("#tb_aaa").bootstrapTable('refresh');

}

},

error: function (e) {

},

complete: function () {

}

});

这种代码太常见了,这个时候我们有这样一个需求:在自己调用ajax请求的时候,我们不想每次都写error:function(e){}这种代码,但是我们又想让它每次都将ajax的错误信息输出到浏览器让用户能够看到。怎么办呢?

2、实现原理

要想实现以上效果其实并不难,我们可以将$.ajax({})封装一层,在封装的公共方法里面定义error对应的事件即可。确实,这样能达到我们的要求,但是并不完美,原因很简单:1)在jquery的基础上面再封装一层,效率不够高;2)需要改变调用者的习惯,每次调用ajax的时候需要按照我们定义的方法的规则来写,而不能直接用原生的$.ajax({})这种写法,这是我们不太想看到。

既然如此,那我们如何做到既不封装控件,又能达到以上要求呢?答案就是通过我们的$.extend去扩展原生的jquery.ajax。

其实实现起来也并不难,通过以下一段代码就能达到我们的要求。(function ($) {

//1.得到$.ajax的对象

var _ajax = $.ajax;

$.ajax = function (options) {

//2.每次调用发送ajax请求的时候定义默认的error处理方法

var fn = {

error: function (XMLHttpRequest, textStatus, errorThrown) {

toastr.error(XMLHttpRequest.responseText, '错误消息', { closeButton: true, timeOut: 0, positionClass: 'toast-top-full-width' });

},

success: function (data, textStatus) { },

beforeSend: function (XHR) { },

complete: function (XHR, TS) { }

}

//3.如果在调用的时候写了error的处理方法,就不用默认的

if (options.error) {

fn.error = options.error;

}

if (options.success) {

fn.success = options.success;

}

if (options.beforeSend) {

fn.beforeSend = options.beforeSend;

}

if (options.complete) {

fn.complete = options.complete;

}

//4.扩展原生的$.ajax方法,返回最新的参数

var _options = $.extend(options, {

error: function (XMLHttpRequest, textStatus, errorThrown) {

fn.error(XMLHttpRequest, textStatus, errorThrown);

},

success: function (data, textStatus) {

fn.success(data, textStatus);

},

beforeSend: function (XHR) {

fn.beforeSend(XHR);

},

complete: function (XHR, TS) {

fn.complete(XHR, TS);

}

});

//5.将最新的参数传回ajax对象

_ajax(_options);

};

})(jQuery);

如果没接触过jquery里面$.extend这个方法的童鞋可能看不懂以上是什么意思。好,我们首先来看看jquery API对$.extend()方法是作何解释的。

妙味课堂ajax教程,妙味课堂JS高级专题篇视频资料分享相关推荐

  1. 妙味课堂ajax教程,前后端高级实战 | Node.js 实战开发:博客系统【妙味课堂】

    第一部分:Node.js基础视频内容 1-初识NodeJs 2-webstorm的使用 3-Node和JS的异同 4-模块的使用 5-模块加载机制 6-模块-module和exports 7-glob ...

  2. php 视频 分享 h5,妙味课堂HTML5视频资料分享

    万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改(这是一项推荐标准.外语原文:W3C Recommendation.见本处参考资料原文内容:). 2014年10 ...

  3. ajax传智播客百度云,传智播客AJAX视频资料分享

    AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 J ...

  4. 尚硅谷《MySQL高级特性篇》教程发布

    MySQL底层如何组织设计数据 怎么理解"索引即数据,数据即索引" 海量数据和高并发场景下如何设计主键 索引下推.覆盖索引对优化有什么优势 如何保证主从一致性 MVCC如何解决可重 ...

  5. 李炎恢教程/妙味课堂javaScript/jQuery/js/Ajax全套视频

    使用JavaScript编写一个Base.js基础库,然后通过这个基础库+自行开发的插件,最终完成一个精简型博客主题的前端功能. 这是一个问答系统精简版,高仿了一些知乎网站的部分功能.通过这个小型项目 ...

  6. 2019最新妙味课堂Javascript实炼高级专题项目实战(完整)

    课程目录 0-JavaScript视频教程--JS学前预热课程-1.avi 0-JavaScript视频教程--JS学前预热课程-2.avi 0-JavaScript视频教程--JS学前预热课程-3. ...

  7. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day01.txt 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQ ...

  8. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day03.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day03.txt 1.约束 1.1.唯一性约束(unique) 1.2.主键约束 1.3.外键约束 2.存储引擎?(整个内容属于了解内容) 2.1 ...

  9. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day02.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day02.txt 1.关于查询结果集的去重? 2.连接查询 2.1.什么是连接查询? 2.2.连接查询的分类? 2.3.在表的连接查询方面有一种现 ...

最新文章

  1. 5.html基础标签:块级+行级元素+特殊字符+嵌套规则
  2. R语言dplyr包连接多个dataframe实战:使用left_join
  3. win7怎么跳过硬盘自检_win10系统改装win7步骤教程
  4. svn数据库自动备份脚本
  5. 小余学调度:学习记录2021.8月
  6. Elasticsearch数据备份与恢复(基于HDFS)
  7. Java 8:测试Lambda水
  8. 最大功率点跟踪_ADI公司推出集成最大功率点跟踪和I2C的80V降压升压电池充电控制器...
  9. 今天突然出现了Property IsLocked is not available for Login '[sa]',我太阳,下面有绝招对付它!...
  10. linux centos7 iso镜像下载,CentOS 7镜像文件下载
  11. ultrascale和arm区别_ZYNQ UltraScale+ MPSoc FPGA初学笔记
  12. 第十一届蓝桥杯省赛第一场原题
  13. 魅族6支持html吗,不知道你们发现了么,魅族Flyme6 超好用的隐藏功能
  14. R语言开发之输出散点图
  15. 一、我来说LuCI: LuCI官方----2.UCI
  16. 华为手机百度云息屏后停止下载_华为智选车载智慧屏评测:像手机一般好用,行车体验更便捷...
  17. 让测试/开发/生产环境相分离
  18. cascades文档翻译——HomeScreen
  19. Win10如何查看自己的ID地址
  20. Java 大写金额转换成数字

热门文章

  1. 基于毫米波的DOA估计方法浅谈
  2. 抖音2023剪映/达芬奇/AE/VEGAS等可用的LUTs预设
  3. python项目分析报告_实战 | Python自动生成PPT分析报告
  4. 图书销售公司薪酬管理系统
  5. ggplot2 | 世界杯赛程的可视化就交给我吧!~
  6. asin c语言中 返回值范围_C语言asin()函数:求正弦值为 x 的弧度数
  7. 开源对话机器人框架:Rasa概述【中小型公司使用Rasa框架,降低准入门槛。灵活性不够高】【可以本地部署】【保护数据隐私(其他框架需要将自己的数据上传到框架官方云服务器,不安全)】【可以重写一些类】
  8. Windows系统用户名文件夹为中文,解决方案
  9. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数
  10. 他山万年历 v1.0 for Linux