东西越多,记不完,也记不住,笔记是最好的记忆了。

回顾以前的ajax的写法,简单封装一个ajax。

//data = {
// url: "url",
// method: "post/get",
// async: "true/false",
// params: { key: value },
// success: fn,
// error: fn
//};
function Ajax(data) {
//默认参数
var _data = {
method: "post",
async: "true",
params: '',
success: function (respose) { },
error: function (respose) { }
}
//重写默认参数
for (var key in data) {
_data[key] = data[key];
} //处理数据
if (_data.params) {
var paramsArr = [];
for (var pkey in _data.params) {
paramsArr.push(pkey + '=' + _data.params[pkey]);
}
if (_data.method.toUpperCase() == 'GET') {
_data.url += (_data.url.indexOf('?') > ? '' : '?');
_data.url += paramsArr.join('&') + new Date().getTime();//避免cache;
} else {
_data.params = paramsArr.join('&');
}
} //异步对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) { //IE
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xhr == null) {
alert("xhr对象实例化失败!")
return false;
} //准备异步操作
xhr.open(_data.method, _data.url, _data.async);
//设置回调函数
xhr.onreadystatechange = function () {
console.log(this.readyState + " " + this.status);
if (this.readyState == ) {
if (this.status == ) {
_data.success(this.responseText);
} else {
_data.error(this.responseText);
}
}
}; if (_data.method.toUpperCase() === 'GET') {
xhr.send(null);
} else {
//xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(_data.params);
}
}

回忆Ajax ๑乛◡乛๑的更多相关文章

  1. 使用Vue构建中(大)型应用

    init 首先要起一个项目,推荐用vue-cli安装 $ npm install -g vue-cli $ vue init webpack demo $ cd demo $ npm install ...

  2. python环境准备

    一.环境准备. 1.安装python3.5.2(勾选环境变量),python2.7.12 2.设置环境变量 (要求命令行输入python,进入python2命令行,打python3时,进入python ...

  3. jquery动态添加元素无法触发绑定事件的解决方案。

    jquery动态添加元素无法触发绑定的事件的解决方案. ╭(●`∀´●)╯二狗最近在工作中遇到一个问题,即当用jquery动态添加元素后,发现给动态添加的元素却无法触发事件(╯#-_-)╯╧═╧ ( ...

  4. javascript数组(1) ——sort的工作原理及其他数组排序方法

    一说到数组排序,最直观的想法就是用sort啊! 请问不用使用sort方法还可以使用什么方法进行数组排序? 比如 :  快速排序法.合并排序法.冒泡排序法.选择排序法.插入排序法.布尔排序法.交互排序. ...

  5. 浅谈Quartz.Net 从无到有创建实例

    一.Quartz.Net介绍 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或 ...

  6. 开始食用grpc(之一)

    开始食用grpc(之一) 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9501353.html ```   记一次和一锅们压马路,路过一咖啡厅(某巴克),随口 ...

  7. Dijango学习_01_pycharm创建应用

    一.当初在学dijango的时候,网上的教程非常的杂且多,对于؏؏☝ᖗ乛◡乛ᖘ☝؏؏我们这种初入虎门的小白来说有太多误区 (其实是大佬的操作着实对小白不太友好,原谅我个萌新..2333..) 二.pi ...

  8. 平衡树splay学习笔记#1

    这一篇博客只讲splay的前一部分的操作(rotate和splay),后面的一段博客咕咕一段时间 后一半的博客地址:[传送门] 前言骚话 为了学lct我也是拼了,看了十几篇博客,学了将近有一周,才A掉 ...

  9. cf213E 线段树维护hash

    链接 https://codeforces.com/contest/213/problem/E 题目大意 给出两个排列a.b,长度分别为n.m,你需要计算有多少个x,使 得\(a_1 + x; a_2 ...

随机推荐

  1. js判断当前页面是顶级窗口

    <script> if(top.location!=self.location){ alert("不是顶层窗口"); }else{ alert("是顶层窗口& ...

  2. starUML的使用方法和各种线条的含义

    使用方法https://www.cnblogs.com/syncCN/p/5433746.html 各种线条的含义:https://www.cnblogs.com/huaxingtianxia/p/6 ...

  3. mybatis mapper接口开发dao层

    本文将探讨使用 mapper接口,以及 pojo 包装类进行 dao 层基本开发 mybatis dao 层开发只写 mapper 接口 其中需要 开发的接口实现一些开发规范 1. UserMappe ...

  4. Comparing Differently Trained Models

    Comparing Differently Trained Models At the end of the previous post, we mentioned that the solution ...

  5. 第5月第8天 jsonmodel

    1. @implementation JSONValueTransformer (CustomTransformer) //时间戳转NSDate - (NSDate *)NSDateFromNSStr ...

  6. mysqlbinlog 查看mysql bin 日志 mysqlbinlog: unknown variable 'default-character-set=utf8'

    mysqlbinlog  mysql-bin.000036 | less 查询包含几个字段的语句: mysqlbinlog mysql-bin.000036| egrep '(201103061000 ...

  7. OpenLayers 3 之 地图图层数据来源(ol.source)详解

    原文地址 source 是 Layer 的重要组成部分,表示图层的来源,也就是服务地址.除了在构造函数中制定外,可以使用 layer.setSource(source) 稍后指定.一.包含的类型 ol ...

  8. 015_sublime插件管理及所有非常有用插件

    一. <1>按照这个进行Package Control的安装 https://packagecontrol.io/installation import urllib.request,os ...

  9. js防止sql注入的参数过滤

    js防止sql注入的参数过滤 <script language="javascript"> <!-- var url = location.search; var ...

  10. ruby on rails在fedora18上install

    ruby on rails 在fedora18下的安装 天朝的网络原因,安装不是很顺畅,所以把过程记录下备用 前面下载rubygem什么的都比较快,新建一个project的时候会出问题 gem new ...