原生ajax分享
最近被大佬问了一个很有趣的问题,你还能手打出一个ajax吗?,我当时的想法是有现成的为什么要自己打,后来我反思了一下(只有靠自己才是强者),在这里给大家分享一个我自己打的ajax,也是自己的一个知识点的记录。
//后台交互ajax方法
//参数1 集合 代表和后台交互的所有数据
function ajax(obj) {
obj.type = obj.type || "get"; //指定提交方式的默认值
obj.data = obj.data || null; //设置数据的默认值
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); // 创建XMLHttpRequest对象
var callback = function (xhr) {
if (xhr.readyState == 4) {//判断状态码为4时,表示请求完毕可执行内容。
if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {//如果状态值为200在300之间,或者是读取缓存中的内容成功时,执行内容。
//这里必须要try catch。即使这里mysql报错,也不会影响到程序的使用。
try {
obj.success && obj.success(eval(xhr.responseText));
}
catch (e) {//如果错误,把错误输出到控制台。
console.log(xhr.responseText);
}
} else {//如果状态值不是200到300之间,或者不是304表示请求失败,执行失败的内容。
obj.error && obj.error();
}
}
}
var toData = function (obj) { //格式化参数
if (obj == null) {
return obj;
}
var arr = [];
for (var i in obj) {
var str = i + "=" + obj[i];
arr.push(str);
}
return arr.join("&");
}
if (obj.type == "post") {//判断是get还是post请求
xhr.open(obj.type, obj.url, obj.async);//打开连接,参数是:请求方式、请求地址、是否异步
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//如果是post请求,设置请求头信息。设置表单提交时的内容类型
var data = toData(obj.data);//格式化参数
xhr.send(data);//发送请求
obj.async == false && callback(xhr);
} else{ //get test.php?xx=xx&aa=xx
var url = obj.url + "?" + toData(obj.data);//格式化yrl参数
xhr.open(obj.type, url, obj.async);//打开链接
xhr.send();//发送请求,因为是get请求,所以send()不填参数
}
xhr.onreadystatechange = function () {//每次状态改变时执行的函数
callback(xhr);
}
}
原生ajax分享的更多相关文章
- 手写原生ajax
关于手写原生ajax重要不重要,各位道友自己揣摩吧, 本着学习才能进步,分享大家共同受益,自己也在自己博客里写一下 function createXMLHTTPRequest() { //1.创建XM ...
- js原生Ajax 的封装和原理
原理及概念 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是一种用于创建快速动态网页的技术. 动态网页:是指可以通过服务器语言结合数 ...
- JS原生ajax
原文链接:http://caibaojian.com/ajax-jsonp.html 一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面: ajax的技术核心是 XMLHttpRe ...
- 学习笔记:IDEA、原生ajax的三道练习题、Markdown
前言 该从何说起呢?想写博客好久了,正好这个学期课很少(大三),可以静下心来写点东西(虽然事情依旧很多),总感觉记录和分享是一件很酷的事情.第一篇博客,第一次使用Markdown写博客,第一次使用ID ...
- javascript实现原生ajax
自从javascript有了各种框架之后,比如jquery,使用ajax已经变的相当简单了.但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件.但又要使用到ajax这种功能该如何 ...
- javascript实现原生ajax的几种方法介绍
自从javascript有了各种框架之后,比如jquery,使用ajax已经变的相当简单了.但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件.但又要使用到ajax这种功能该如何 ...
- 原生Ajax
使用原生Ajax 验证用户名是否被注册 创建出注册信息: <h1>注册信息</h1><input type="text" name="txt ...
- JS原生ajax与Jquery插件ajax深入学习
序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...
- 原生Ajax 和Jq Ajax
前言:这次介绍的是利用ajax与后台进行数据交换的小例子,所以demo必须通过服务器来打开.服务器环境非常好搭建,从网上下载wamp或xampp,一步步安装就ok,然后再把写好的页面放在服务器中指定的 ...
随机推荐
- mysqldump 导出命令
在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看: mysqldump 最常用的: mysqldump -uroot -pmysql databasefo ...
- RabbitMQ 详解 五种队列-SpiritMark
上次带大家看了一下RabbitMQ的基本概念,今天我们来详解一下 RabbitMQ的五种队列,也算是一个笔记,如果对您有帮助,可以关注一下,便于下次光顾! 文章目录 1.简单队列 2.work 模式 ...
- 【mybatis-plus】CRUD必备良药,mybatis的好搭档
做开发,免不了对数据进行增删改查,那么mybatis-plus我觉得很适合我这个java新手,简单好用. 官网在这 一.什么是mybatis-plus MyBatis-Plus(简称 MP),是一个M ...
- MySQL:判断逗号分隔的字符串中是否包含某个字符串 && 如何在一个以逗号分隔的列表中的一个字段中连接MySQL中的多对多关系中的数据
需求: sql语句中,判断以逗号分隔的字符串中是否包含某个特定字符串,类似于判断一个数组中是否包含某一个元素, 例如:判断 'a,b,c,d,e,f,g' 中是否包含 'a',sql语句如何 ...
- C# 将json字符串进行排序 转成键值
public static string StortJson(string json) { var dic = JsonConvert.DeserializeObject<SortedDicti ...
- mybatis-plus 自定义SQL,XML形式,传参的几种方式
mybatis-plus 自定义SQL,XML形式,传参的几种方式 前提说明 所涉及文件 传参类型说明 1.Java代码中使用QueryWrapper动态拼装SQL 2.简单类型参数(如String, ...
- Oracle 使用MERGE INTO 语句 一条语句搞定新增编辑
MERGE INTO RDP_CHARTS_SETTING T1 USING (SELECT '10001' AS PAGE_ID, 'test' AS CHART_OPTION FROM DUAL) ...
- 22. Generate Parentheses生成指定个括号
生成指定个数的括号,这些括号可以相互包括,但是一对括号的格式不能乱(就是配对的一个括号的左括号要在左边,右括号要在右边) 思维就是从头递归的添加,弄清楚什么时候要添加左括号,什么时候添加右括号 有点像 ...
- Centos7 安装Teamviewer
参考:链接1 链接2 链接3 由于工作原因,需要再Centos7.6下安装Teamviewer,流程如下: 下载 TeamViewer下载 链接 wget https://download.tea ...
- 探索 .NET团队对API的设计流程
在这篇文章中,我想介绍一些我觉得非常有趣的东西,.NET 团队是如何设计API的? 我们先来看下.NET团队面临的有哪些挑战,您正在设计一套API库,每天有数百万的开发人员在使用这些库,它们在世界各地 ...