//ajax公共方法,zs 2017-06-14
$.extend({
//比jq的ajax多了的参数:
//salert是否在请求成功后弹出后台的SuressStr字段值
//ealertStr:请求出错
majax: function (a) {
if (typeof a === "object") {
var defaultOption = {
url: "",
async: true,
cache: true,//dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。
data: null,
type: "get",
timeout: null,
dataType: "",//预期服务器返回的数据类型
contentType: "application/x-www-form-urlencoded",//发送信息至服务器时内容编码类型。
beforeSend: function (XMLHttpRequest) {
// console.log("请求开始");
},
//dataFilter: function (data, type) {
// console.log("请求成功success之前");
//dataFilter给Ajax返回的原始数据的进行预处理的函数。它的调用在success之前
//测试1.10.2和2.0.3版本的js如果存在此方法则success不会执行。会直接到error方法里,虽然状态码是200
//},
success: function (data, textStatus, jqXHR) {
// console.log("请求成功");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// console.log("请求出错");
},
complete: function (XMLHttpRequest) {
//在error或success之前执行
// console.log("无论成功错误我都存在");
},
context: null,//这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象
global: true,//是否触发全局 AJAX 事件。默认值: true。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。
ifModified: false,//仅在服务器数据改变时获取新数据。默认值: false。使用 HTTP 包 Last-Modified 头信息判断。在 jQuery 1.4 中,它也会检查服务器指定的 'etag' 来确定数据没有被修改过。
jsonp: "",
jsonpCallback: "",
username: null,
password: null,
processData: true,
scriptCharset: "",
traditional: false,// 默认的话,traditional为false,即jquery会深度序列化参数对象,不深度序列化的例子:data:{ p: ["123", "456", "789"] },p会序列化成 p=123&p=456&p=456。深度序列化例子:data:{foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
//xhr: function () {
//测试会导致返回的status为0
//},
//自加参数
eAlertStr: "",//请求出错弹出的内容
eAlertStrOrder: false,//eAlertStr弹出的顺序,false表示在error方法执行完毕之后弹出
sAlert: false,//请求成功后是否弹出后台返回的SuccessStr字段的内容,必须确定后台返回的是能序列化的json
sAlertOrder: false,//sAlert弹出的顺序,false表示在success方法执行完毕之后弹出
execomplete: function (data, textStatus, jqXHR) {
//success或error方法执行完毕,success时该方法的参数才有值
// console.log("方法执行完毕了");
}
}
for (i in a) {
defaultOption[i] = a[i];
}
$.ajax({
url: defaultOption.url,
async: defaultOption.async,
cache: defaultOption.cache,
data: defaultOption.data,
type: defaultOption.type,
timeout: defaultOption.timeout,
dataType: defaultOption.dataType,
contentType: defaultOption.contentType,
beforeSend: function (XMLHttpRequest) {
defaultOption.beforeSend(XMLHttpRequest);
},
//dataFilter: function (data, type) {
// defaultOption.dataFilter(data, type);
//},
success: function (data, textStatus, jqXHR) {
var i = true;
var datas = data;
if (defaultOption.sAlert && typeof data != "object") {
datas = JSON.parse(data);
}
if (defaultOption.sAlert && defaultOption.sAlertOrder && datas.SuccessStr != null && datas.SuccessStr != "undefined" && $.trim(datas.SuccessStr) != "") {
$.gritter.add({
title: "提示",
text: datas.SuccessStr,
class_name: 'gritter-success '
});
i = false;
}
if (!i) {
setTimeout(function () {
defaultOption.success(data, textStatus, jqXHR);
defaultOption.execomplete(data, textStatus, jqXHR);
}, 400);
} else {
defaultOption.success(data, textStatus, jqXHR);
if (i && defaultOption.sAlert && datas.SuccessStr != null && datas.SuccessStr != "undefined" && $.trim(datas.SuccessStr) != "") {
$.gritter.add({
title: "提示",
text: datas.SuccessStr,
class_name: 'gritter-success '
});
}
setTimeout(function () {
defaultOption.execomplete(data, textStatus, jqXHR);
}, 400);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
var i = true;
if (defaultOption.eAlertStrOrder && defaultOption.eAlertStr != null && defaultOption.eAlertStr != "undefined" && $.trim(defaultOption.eAlertStr) != "") {
$.gritter.add({
title: "提示",
text: defaultOption.eAlertStr,
class_name: 'gritter-error '
});
i = false;
}
if (!i) {
setTimeout(function () {
defaultOption.error(XMLHttpRequest, textStatus, errorThrown);
defaultOption.execomplete(data, textStatus, jqXHR);
}, 400);
} else {
defaultOption.error(XMLHttpRequest, textStatus, errorThrown);
if (i && defaultOption.eAlertStr != null && defaultOption.eAlertStr != "undefined" && $.trim(defaultOption.eAlertStr) != "") {
$.gritter.add({
title: "提示",
text: defaultOption.eAlertStr,
class_name: 'gritter-error '
});
setTimeout(function () {
defaultOption.execomplete(data, textStatus, jqXHR);
}, 400);
}
}
},
complete: function (XMLHttpRequest) {
defaultOption.complete(XMLHttpRequest);
},
context: defaultOption.context,
global: defaultOption.global,
ifModified: defaultOption.ifModified,
jsonp: defaultOption.jsonp,
jsonpCallback: defaultOption.jsonpCallback,
username: defaultOption.username,
password: defaultOption.password,
processData: defaultOption.processData,
scriptCharset: defaultOption.scriptCharset,
traditional: defaultOption.traditional,
//xhr: function () {
// defaultOption.xhr();
//}
});
} else {
console.log("参数格式不正确");
}
},
mpost: function (url, data, callback, type) {
if (jQuery.isFunction(data)) {
type = type || callback;
callback = data;
data = undefined;
}
return $.majax({
url: url,
type: "post",
dataType: type,
data: data,
success: callback
});
},
mget: function (url, data, callback, type) {
if (jQuery.isFunction(data)) {
type = type || callback;
callback = data;
data = undefined;
}
return $.majax({
url: url,
type: "get",
dataType: type,
data: data,
success: callback
});
},
});

成功的提示的插件为 $.gritter自行引用,也可以自己改成你们项目里的,注意下我这提示用的返回字段也要更改成你们项目的

转载注明:http://www.cnblogs.com/zszs/p/7016606.html

jq ajax封装的更多相关文章

  1. 关于jq ajax封装以及error的报错参数

    jq的ajax完整版本 $.ajax({ url: "GetCityByPId.ashx", data: {pId:pid}, dataType: "JSON" ...

  2. 关于jq ajax封装以及ajax上传Webapi

    jq的ajax完整版本 $(function () {     fileChange(); }); function fileChange() {     $('#fileinput').change ...

  3. 原生Ajax 和Jq Ajax

    前言:这次介绍的是利用ajax与后台进行数据交换的小例子,所以demo必须通过服务器来打开.服务器环境非常好搭建,从网上下载wamp或xampp,一步步安装就ok,然后再把写好的页面放在服务器中指定的 ...

  4. Javascript:来一个AJAX封装函数

    前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...

  5. 妹味6:ajax与ajax封装

    (功能)ajax能且仅能 从服务器读取文件 (环境)需要服务器环境才能测试,可以用工具建立本地服务器环境 (缓存)解决缓存问题:url加时间戳让每次请求地址唯一,如 url='abc.txt?t='+ ...

  6. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  7. Ajax封装函数笔记

    Ajax封装函数: function ajax(method, url, data, success) { //打开浏览器 //1.创建一个ajax对象 var xhr = null; try { x ...

  8. 原生ajax封装,包含post、method方式

    原生ajax封装,包含post.method方式 function ajax(method, url, data, success) { var xhr = null; try { xhr = new ...

  9. Ajax工作原理和原生JS的ajax封装

    前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...

随机推荐

  1. CentOS6.10下安装MongoDB和Redis

    安装mongodb 首先考虑离线安装,但是安装过程中在启动服务的时候出现了问题,centOS出于稳定原因考虑,系统自带的glibc版本过低, 而编译需要使用较高版本,这个问题我查询了一下,需要升级gl ...

  2. hadoop文件系统上的小文件合并-Hadoop Archives

    1. 什么是Hadoop archives Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop archive的扩展名是.har.Ha ...

  3. 学习 | mockjs入门

    最近工作有用到mockjs模拟数据,实现前后端分离,今天系统的把mockjs的API都过了一遍,算是入门吧. 什么是mockjs mockjs就是一个模拟数据,生成随机数据,拦截ajax请求. 为什么 ...

  4. StringBuilder 比 String 快?空嘴白牙的,证据呢!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 聊的是八股的文,干的是搬砖的活! 面我的题开发都用不到,你为什么要问?可能这是大部分 ...

  5. Python爬虫开发者工具介绍

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. chrome 开发者工具 当我们爬取不同的网站时,每个网站页面的实现方式各不相同,我们需要对 ...

  6. 科普,想成为厉害的 Java 后端程序员,你需要懂这些

    站在运筹帷幄的角度来看,一名厉害的 Java 后端程序员都需要懂得哪些知识呢?我想,这也是很多读者迫切想知道的一个问题,因为如果不站在一个宏观的角度的话,所有学过的知识点都是零散的,就感觉像一只迷路的 ...

  7. asp.net core 从 3.1 到 5.0

    asp.net core 从 3.1 到 5.0 Intro 就在前几天,微软宣布了 .NET5 发布了 RC1 版本,这也意味着 .NET5 的开发基本稳定了,正式发布之前,不会再新增新的 Feat ...

  8. 灵活使用 SQLAlchemy 中的 ORM 查询

    之前做查询一直觉得直接拼 SQL 比较方便,用了 SQLAlchemy 的 ORM 查询之后,发现也还可以,还提高了可读性. 这篇文章主要说说 SQLAlchemy 常用的 ORM 查询方式,偏实践. ...

  9. Druid实现数据库连接用户密码加密

    使用ConfigFilter ConfigFilter的作用包括: 从配置文件中读取配置 从远程http文件中读取配置 为数据库密码提供加密功能 1 配置ConfigFilter 1.1 配置文件从本 ...

  10. 关于KeePass实现mstsc远程桌面(rdp协议)的自动登录

    本文的Keepass版本:KeePass Password Safe Version 2.45 首先介绍一下Keepass,引用官网的解释如下: KeePass is a free open sour ...