JavaScript(十四)经典的Ajax
(function(){
//唯一向外暴露一个顶层变量
var myajax = window.myajax = {};
//作者、版本号信息
myajax.author = "maxwelldu";
myajax.version = "1.0.0";
//这个对象有两个方法,一个get,一个post
myajax.get = function(URL, queryJSON, callback) {
//创建xhr对象,解决兼容性问题
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
} else {
var xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
//结果返回之后要做的事情
xhr.onreadystatechange = function() {
if (xhr.readyState === xhr.DONE) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
callback && callback(null, xhr.responseText);
} else {
callback && callback(new Error("没有要请求的文件"), undefined);
}
}
};
//拼接字符串
var queryString = myajax._queryjson2querystring(queryJSON);
//配置
xhr.open('GET', URL + "?" + queryString, true);
//发送
xhr.send(null); //没有数据发送也要send
}
myajax.post = function(URL, queryJSON, callback) {
//创建xhr对象,解决兼容性问题
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
} else {
var xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
//结果返回之后要做的事情
xhr.onreadystatechange = function() {
if (xhr.readyState === xhr.DONE) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
callback && callback(null, xhr.responseText);
} else {
callback && callback(new Error("没有要请求的文件"), undefined);
}
}
};
//拼接字符串
var queryString = myajax._queryjson2querystring(queryJSON);
console.log(queryString);
//配置
xhr.open('POST', URL, true);
//发送
xhr.setRequestHeader('Content-Type', "application/x-www-form-urlencoded");
xhr.send(queryString);
}
//内部函数,查询json变成查询字符串
//输入一个{"name":"max", "age":18, "sex":"男"}
//返回一个name=max&age=18&sex=%E8%C6%B6
myajax._queryjson2querystring = function(json) {
var arr = [];
for (var k in json) {
arr.push(k + '=' + encodeURIComponent(json[k]));
}
return arr.join('&');
}
})();
JavaScript(十四)经典的Ajax的更多相关文章
- Flask 教程 第十四章:Ajax
本文翻译自The Flask Mega-Tutorial Part XIV: Ajax 这是Flask Mega-Tutorial系列的第十四部分,我将使用Microsoft翻译服务和少许JavaSc ...
- 第十四篇、Ajax与Json
1.Ajax的核心知识 1.1 XMLHttpRequest对象 function loadName(){ var xmlHttp; if(window.XMLHttpRequest){ xmlHtt ...
- javascript (十四) dom
通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素. HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object M ...
- JavaScript十大经典排序算法
排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序: 输入:n个数:a1,a2,a3,…,an输出:n个数的排列:a1’,a2’,a3’,…,an’,使得a1’ 再讲的形象点就是排排坐 ...
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正則表達式)
一RegExp对象概述 RegExp对象表示正則表達式,RegExp是正則表達式的缩写.它是对字符串运行模式匹配的强大工具. RegExp 对象用于规定在文本中检索的内容. 当您检索某个文本时.能够使 ...
- javascript 十大经典排序
首先生成一个数字数组: let arr = Array.from({length:20},x=>{return Math.ceil(Math.random()*10**2)}) console. ...
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)
1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...
- m_Orchestrate learning system---二十四、thinkphp里面的ajax如何使用
m_Orchestrate learning system---二十四.thinkphp里面的ajax如何使用 一.总结 一句话总结:其实ajax非常简单:前台要做的事情就是发送ajax请求过来,后台 ...
- 十大经典排序算法总结(JavaScript描述)
前言 读者自行尝试可以想看源码戳这,博主在github建了个库,读者可以Clone下来本地尝试.此博文配合源码体验更棒哦~~~ 个人博客:Damonare的个人博客 原文地址:十大经典算法总结 这世界 ...
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
随机推荐
- SqlServer2008发布订阅(数据同步)
目录 1. 发布必备条件 1.1. 数据库故障还原模型必需为完全还原模型 1.2. 数据库被同步的数据表必须有主键 1.3. 计算机名称来进行SQLServer服务器的注册 1.4. SQLServe ...
- python类变量以及应用场景
类变量是python 中class 的变量,区别于实例的变量.我们通过一些例子具体了解一下 先看下面的例子 >>> class Demo(object): ... v1 = 1 .. ...
- 采用jmeter测试dubbo服务接口
http://www.kissyu.org/2017/02/08/jmeter%E6%B5%8B%E8%AF%95dubbo%E6%8E%A5%E5%8F%A3/
- TCP/IP协议族-----22、万维网和HTTP
- 网页页面NULL值对浏览器兼容性的影响
网页页面NULL值对浏览器兼容性的影响 近期做项目中一个页面中的input radio出现浏览器兼容性问题. 主要问题: 在谷歌浏览器,360急速模式和搜狗急速模式中给radio初始动态赋 ...
- 实战c++中的vector系列--emplace_back造成的引用失效
上篇将了对于struct或是class为何emplace_back要优越于push_back,可是另一些细节没有提及.今天就谈一谈emplace_back造成的引用失效. 直接撸代码了: #inclu ...
- python批量删除文件
敲代码測试时总会碰到要删除日志目录下的日志或者删除一些历史文件.每次都会生成,再測试的时候为了查找错误原因方便总是要在測试前删除这些文件.手动删除比較麻烦.所以写一个批量删除脚本 import os ...
- 『NSOperation、NSOperationQueue』详解
1. NSOperation.NSOperationQueue 简介 NSOperation.NSOperationQueue 是苹果提供给我们的一套多线程解决方案.实际上 NSOperation.N ...
- LeetCode_Mysql_Second Highest Salary
176. Second Highest Salary 1. 问题描写叙述: 写一个sql语句从 Employee 表里获取第二高位的工资. 2. 解决思路: 这道题非常easy,就当热身了.首先用ma ...
- Android基础新手教程——4.1.1 Activity初学乍练
Android基础新手教程--4.1.1 Activity初学乍练 标签(空格分隔): Android基础新手教程 本节引言: 本节開始解说Android的四大组件之中的一个的Activity(活动) ...