原生JS封装ajax方法

http://blog.sucaijiayuan.com/article/89

 

 

jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只需要ajax,这时引入jquery库会造成资源浪费,也会显得页面臃肿。这时我们就需要用原生JS写一个ajax函数了。

 

 1 /* 封装ajax函数
 2  * @param {string}opt.type http连接的方式,包括POST和GET两种方式
 3  * @param {string}opt.url 发送请求的url
 4  * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
 5  * @param {object}opt.data 发送的参数,格式为对象类型
 6  * @param {function}opt.success ajax发送并接收成功调用的回调函数
 7  */
 8     function ajax(opt) {
 9         opt = opt || {};
10         opt.method = opt.method.toUpperCase() || 'POST';
11         opt.url = opt.url || '';
12         opt.async = opt.async || true;
13         opt.data = opt.data || null;
14         opt.success = opt.success || function () {};
15         var xmlHttp = null;
16         if (XMLHttpRequest) {
17             xmlHttp = new XMLHttpRequest();
18         }
19         else {
20             xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
21         }var params = [];
22         for (var key in opt.data){
23             params.push(key + '=' + opt.data[key]);
24         }
25         var postData = params.join('&');
26         if (opt.method.toUpperCase() === 'POST') {
27             xmlHttp.open(opt.method, opt.url, opt.async);
28             xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
29             xmlHttp.send(postData);
30         }
31         else if (opt.method.toUpperCase() === 'GET') {
32             xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);
33             xmlHttp.send(null);
34         } 
35         xmlHttp.onreadystatechange = function () {
36             if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
37                 opt.success(xmlHttp.responseText);
38             }
39         };
40     }

使用示例:

 1 ajax({
 2     method: 'POST',
 3     url: 'test.php',
 4     data: {
 5         name1: 'value1',
 6         name2: 'value2'
 7     },
 8     success: function (response) {
 9        console.log(response);
10     }
11 });

 

转载于:https://www.cnblogs.com/a757956132/p/5603176.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 从库 问题_一篇文章帮你解决Mysql 中主从库不同步的问题

写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故。今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题。坐好了,准备发车&a…

深度学习代码练习

代码下载地址:https://github.com/daijifeng001/R-FCN 对应论文:Object Detection via Region-based Fully Convolutional Networks 1、代码里面给的数据库下载链接失效,需要去代码下载主页最下方给定的资源区下载。 2、按照要求一步一步运行…

rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

概述之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展。01消息队列Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队…

BZOJ 2763: [JLOI2011]飞行路线 spfa dp

题目链接&#xff1a; http://www.lydsy.com/JudgeOnline/problem.php?id2763 题解&#xff1a; d[x][kk]表示从s到x用了kk次免费机会的最少花费。 代码&#xff1a; #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #incl…

mysql快速删除大表数据部分数据_mysql删除大表的部分数据

mysql删除大表的部分数据好久没写博客。最近项目要上线。下班时间还得陪着老妈。实在没时间更新。今天有人提了一个问题&#xff0c; www.2cto.com一个表有1亿6000万的数据&#xff0c;有一个自增ID。最大值就是1亿6000万&#xff0c;需要删除大于250万以后的数据&#xff0c;…

读“硬件抽象层:HAL”的心得

1 HAL是建立在Linux驱动上的一套程序库&#xff0c;并不属于Linux内核&#xff0c;而是属于Linux内核层上的应用层。它的目的就是保护“私人财产”&#xff0c;避免应用程序直接访问Linux驱动。 2在Android系统中使用Linux驱动有两种方式。一种就是通过传统的方式直接与Linux交…

mysql所有版本介绍_mysql各个版本介绍

一、版本说明&#xff1a;MYSQL自从被ORCLE收购后&#xff0c;软件的版本也ORACLE化&#xff0c;整体的感觉就是服务的费用提高了很多&#xff0c;整体的软件的Supports也有相应的提高&#xff1b;MYSQL根据软件的功能可以分成三个版本&#xff1a;社区版、企业版、集群版。社区…

安装jdk源码

step1:打开选择Window->Preference step2:选择Java->Installed JREs step3:选中你所安装的jre&#xff0c;点击Edit&#xff0c;进入Edit JRE,如下所示 step4:选中rt.jar,点击Source Attachment step5:在对话框中&#xff0c;点击External Folder&#xff0c;选择你所安装…

d3js mysql_D3js技术文档 可视化展现

转载请注明http://www.cnblogs.com/juandx/articles/3885220.htmlD3js技术文档概述D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. For example, you can use D3 to generate an HTML …

text-indent的用法

一、text-indent应用于块级元素 <style type"text/css">*{margin:0;padding:0;}body{font-size:12px;color:#333;}p{text-indent:2em;background-color:#f00;color:#fff;}</style> </head> <body><p>携程旅行网携程旅行网携程旅行网携…

kettle连接mysql教程_kettle 连接 mysql8

kettle默认使用的是org.gjt.mm.mysql.Driver&#xff0c;而mysql 8.0以上connector已经不再支持这个包名;即使将mysql-connector-java-8.0.xx.jar包拷贝到data-integration/lib目录下&#xff0c;还是报错找不到驱动;所以要用jndi方法配置kettle&#xff0c;用com.mysql.cj.jdb…

小白学数据分析--留存率使用的窘境

小白学数据分析--留存率使用的窘境 随着移动游戏整体的火热&#xff0c;现在看到太多的数据&#xff0c;太多信息&#xff0c;很多时候我们仰慕和钦佩别人的成功&#xff0c;我们总是把这个行业达成所谓共识的一些数据来出来说明问题。因为我们笃信数据是有力的证据&#xff0c…

python嵩天第七章课后题答案_python语言程序设计嵩天第七章答案

参考答案如下直流负反馈可以稳定电路的静态工作点&#xff0c;嵩天交流负反馈可以改善放大器的动态性能。餐厅环境准备包括&#xff1a;程序( )、背景音乐、通风及温度的准备。设计下列代码的输出结果是______var a \abcd45 钢锻造后出现带状组织&#xff0c;章答在淬火前需要…

mongodb的返回(2)

限制条件 - 结果集转&#xff08;转汇智网&#xff09; 很多时候查询返回的结果集并不完全是你想要的&#xff0c;或许你只需要它们中间的一部分&#xff0c;这个时候我们可以通过条件来限制结果集返回的内容。 limit方法&#xff1a;设定返回结果集中的最大文档数量。 语法&am…

用groovy采集网页数据

首先&#xff0c;用 http://groovyconsole.appspot.com/ 测试下面的代码&#xff0c;发现引用总是失败. 下载了GGTS&#xff1a; https://spring.io/tools/ggts 测试成功&#xff1a; Grapes( Grab(grouporg.ccil.cowan.tagsoup, moduletagsoup, version1.2) )import org.ccil…

vue 时间回显 格式化_VSCode 开发Vue必备插件

1。Vetur —— 语法高亮、智能感知、Emmet等包含格式化功能&#xff0c; AltShiftF &#xff08;格式化全文&#xff09;&#xff0c;CtrlK CtrlF&#xff08;格式化选中代码&#xff0c;两个Ctrl需要同时按着&#xff09;2。EsLint —— 语法纠错3。Debugger for Chrome —— …

angluar.js 学习

地址&#xff1a; http://www.cnblogs.com/freefed/p/4835427.html 如何搭建一个angularJS应用 http://www.cnblogs.com/Cuiy/p/4285520.html 初识Angular.js https://github.com/xufei/blog/issues xufei的博客 指令&#xff1a; ng-hrefng-srcng-disabled ng-disabled"…

公司消费一卡通“变法”记

一卡通在每家公司都存在&#xff0c;不仅含考勤机&#xff0c;还会有门禁&#xff0c;订餐&#xff0c;食堂消费等。我们公司采用的是厦门舒特科技的一卡通系统&#xff0c;前后用了好几年了。 在我之前&#xff0c;一卡通的功能主要启用了考勤和消费这两大模块。 1、考勤机是每…

mysql添加分区健_MySQL添加分区添加索引

添加新用户 今天在为mysql添加新用户时&#xff0c;找到下面这条指令&#xff1a; insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 然后退出 mysql>\q 重新登录 $mysql -u …

win7 mysql添加到服务_MySQL服务添加到Windows系统服务中

MySQL的安装配置(win7 64-bit)转&#xff0c;整理。MySQL 版本是mysql-noinstall-5.1.66-winx64.zip(免安装版)mysql-workbench-gpl-5.2.44-win32.msimysql-connector-java-5.1.22mysql 配置数据库编码为utf-8(my.ini中指定).1 安装先将mysql-noinstall-5.1.66-winx64.zip解压缩…