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

/* 封装ajax函数

* @param {string}opt.type http连接的方式,包括POST和GET两种方式

* @param {string}opt.url 发送请求的url

* @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的

* @param {object}opt.data 发送的参数,格式为对象类型

* @param {function}opt.success ajax发送并接收成功调用的回调函数

*/

function ajax(opt) {

opt = opt || {};

opt.method = opt.method.toUpperCase() || 'POST';

opt.url = opt.url || '';

opt.async = opt.async || true;

opt.data = opt.data || null;

opt.success = opt.success || function () {};

var xmlHttp = null;

if (XMLHttpRequest) {

xmlHttp = new XMLHttpRequest();

}

else {

xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');

}var params = [];

for (var key in opt.data){

params.push(key + '=' + opt.data[key]);

}

var postData = params.join('&');

if (opt.method.toUpperCase() === 'POST') {

xmlHttp.open(opt.method, opt.url, opt.async);

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');

xmlHttp.send(postData);

}

else if (opt.method.toUpperCase() === 'GET') {

xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);

xmlHttp.send(null);

}

xmlHttp.onreadystatechange = function () {

if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {

opt.success(xmlHttp.responseText);

}

};

}

使用示例:

ajax({

method: 'POST',

url: 'test.php',

data: {

name1: 'value1',

name2: 'value2'

},

success: function (response) {

console.log(response);

}

});

原生JS封装Ajax插件(同域&&jsonp跨域)

抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...

使用原生JS封装Ajax

使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...

原生js封装ajax:传json,str,excel文件上传表单提交

由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...

原生js封装ajax,深入理解$.ajax()

直接上代码 //封装的ajax函数 // 传一个对象,所有要用的参数都在对象中 因为不写对象 实参列表个数太多,所以像jq一样,调用ajax也是把对象当实际参数传进去 // type 请求方式 默认g ...

原生js封装ajax代码

方法一:(类似jQuery的封装方法) 1.ajax函数封装: /* *author: Ivan *date: 2014.06.01 *参数说明: *opts: {'可选参数'} **method: ...

ajax 原生js封装ajax [转]

/* 封装ajax函数 * @param {string}opt.type http连接的方式,包括POST和GET两种方式 * @param {string}opt.url 发送请求的url * @ ...

原生JS封装ajax以及request

一.封装原生的xhr为ajax类 xhr以及用法见之前的文章 1.根据url确定请求的头部以及别的信息. var _headerConfig = {}; if(url.indexOf('getcapt ...

原生js封装Ajax

[转载请注明出处] 1 /** * @fileoverview ajax请求公用组件 * @author Limo * @date 2015/08/07 * Native package ajax m ...

原生js封装ajax,实现跨域请求

描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...

随机推荐

IOS 通过苹果开放API检测更新

#define APPID @"1067207206" -(void)onCheckVersion { NSDictionary *infoDic = [[NSBundle mai ...

[转]CodeSmith和PowerDesigner的使用安装和数据库创建

最近要忙期考,但还是决定每天抽点空来写CodeSmith的系列文章了,在此实在不敢用教程这个词语,毕竟自己对CodeSmith了解的也不是很多,有很多牛人都在博客园发布了不少关于CodeSmith的文 ...

java:打包

包名命名规范: 1.包名全部小写 2.包名一般情况下是域名的倒过来写+个性命名,如:tinyphp.com,就写成com.tinyphp+.xxx 打包方法 package + 包名 package ...

linux Page cache和buffer cache----- systemtap

http://shixm.iteye.com/blog/1724718 http://blog.csdn.net/dianhuiren/article/details/7543886

DX11 Without DirectX SDK--04 使用DirectX Tool Kit帮助开发

回到 DirectX11--使用Windows SDK来进行开发 DirectX Tool Kit下载 DirectX Tool Kit是一个包含许多类的集合,用于为公共Windows平台编写Dire ...

codeblock字体问题

有的时候在codeblock中打下划线,会显示空格, 这个时候可以修改一下字体 settings->editor->editor settings最上面的fonts框中选择choose,然 ...

Linux命令-用户及权限管理

一.权限管理linux系统中对文件权限的描述机制: u g od r w x r w x r - x (r读,w写,x执行)文件 所有者 所属组 其他人可以表示为二进制: 111 111 101也可以 ...

JS应用实例6:二级联动

本案例很常用,应用场景:注册页面填写籍贯,省市二级联动 总体思想:创建一个二维数组存入省市,获取选中的省份并比较,创建标签遍历添加 代码:

Source Insight里头文件注释和函数头的注释

1.将下述代码拷贝入一个文件,扩展名为em 2.打开BASE工程,添加本文件,并重新同步 3.添加hh_InsertFuncHeader的快捷键,即为函数头注释,光标需要放在函数名那一行,否则无效 4 ...

js 封装ajax方法吗,原生JS封装ajax方法相关推荐

  1. ajax总结(四):原生js封装a和jQurey版ajax介绍

    一.为什么要封装? 发现很多地方都要用ajax请求,但是大部分代码都是一样的,所以根据封装的思想,相同的代码封装成函数,在需要用的地方来调用,这样会很方便. 二.js封装ajax过程: 1.先了解结构 ...

  2. js异步请求php数据,原生JS发送异步数据请求实例详解

    这篇文章主要为大家详细介绍了原生JS发送异步数据请求的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在做项目的时候,有时候需要用到异步数据请求,但是如果这个时候没有框架的依赖,就需要用到 ...

  3. 原生js写三级联动 java_原生js三级联动的简单实现代码

    本文实例为大家分享了js查询天气应用,供大家参考,具体内容如下 实现功能:打开网页时显示用户所在城市的天气状况,在输入框输入城市可查询其它城市. 实现过程:先调用百度地图的API来获取用户所在的城市, ...

  4. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  5. class 原生js获取父元素_原生js获取class

    //使用原生js时,通过class名称就可以得到相应的class名称标签组封装的函数 //定义一个函数getClass(oParent,aClass); function getClass(oPare ...

  6. 原生js获取html元素高度,原生JS获取元素宽高实践详解

    开篇的话 任何不是亲身实践中求得的知识,都不是属于你的. 任何求得的知识不去时常温习运用,也不是属于你的. 记录由来 在做个上拉广告功能中遇到了一个"理所当然"觉得对的用法,慢慢才 ...

  7. html原生js实现图片轮播,原生JS实现图片轮播切换效果

    原生JS实现图片轮播切换效果 2019-01-06 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了原生JS实现图片轮播切换效果,编程之家小编觉得挺不错的,现在分 ...

  8. js 写html代码编辑器,原生JS写一个功能强大的编辑器

    因为一个同学,要做一个能加入图片的留言板功能,类型与QQ空间留言板和百度贴吧发帖的那种形式,同时在网上找了找发生网上对这方面的交流很少,所以发表这篇文章抛砖引玉,希望能帮助广大的学习者,也同时希望大佬 ...

  9. js获取当前农历年月 原生js实现公历转农历

    原生js实现公历转农历(转载) 网上原生JS实现公历转农历的代码参差不齐,个人经过项目实践后发现有个博主的写的很好使用起来也很方便,于是一起分享给大家. 原博主的代码是在vue框架下写的,具体如下: ...

最新文章

  1. python数据分析设置_Python 数据分析系列之如何安装和设置 Python
  2. 装了虚拟机,但是没有虚拟网卡vmnet0 vmnet1 vmnet8
  3. 完美的素数_JAVA
  4. android 恢复短信 失败,解决安卓手机发送短信失败的方法
  5. C语言循环结构素数判断,C语言实验之判断素数(循环结构java)方法讲解
  6. autotools入门笔记(一)
  7. 题解-ZeroJudge-c686 高斯符號
  8. Kotlin学习笔记 第二章 类与对象 第九节 泛型
  9. extjs 在textfield后面加一个button_用python 做一个简单的MP3
  10. 2020 年,开启现代库的基建学习 —— 从项目演进看前端工程化发展
  11. 【欧洲AI复兴】马克龙:法国AI要赶美超中!
  12. 汉字的 unicode 编码表
  13. 苹果手机录屏软件_手机录屏软件哪个好 好用的手机录屏软件推荐
  14. Hive窗口函数的使用
  15. 突发!华为确认53岁高管丁耘骤逝!执掌最大营收业务,东南大学毕业,在职已超26年...
  16. 阿里云服务器SSL不可用
  17. shell语法(2)
  18. 秒杀Excel的动态可视化报表,不用学python,用它仅需10分钟
  19. URL编码和Base64编码
  20. html中嵌套谷歌定位地图

热门文章

  1. 红米note5解锁教程_红米NOTE5手机忘密码了怎么办?修手机的师傅教给我一个简单方法,解锁其实很简单...
  2. 激活Offise2013
  3. LLMs:《Orca: Progressive Learning from Complex Explanation Traces of GPT-4》翻译与解读
  4. android 动画菜鸟,android---动画入门(一)
  5. React的Props检查:PropTypes
  6. 记录kubesphere集群KubeKey安装
  7. hnustOJ-1741: 好友互动标识
  8. 论文阅读:Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning
  9. 指针和引用的区别以及引用与指针基础
  10. 虹科分享|datalocker的USB端点安全保护