封装了jQuery的Ajax请求全局配置
来源: 阅读:1766 次 日期:2015-02-06 15:01:37
温馨提示: 小编为您整理了“封装了jQuery的Ajax请求全局配置”,方便广大网友查阅!

摘要:

jQuery已经成为项目中最常见的js库,也是前端开发最喜欢使用的库。下面是在项目中封装了jQuery的Ajax,分享给大家。

代码:

代码如下:

// ajax 请求参数

var ajaxSettings = function(opt) {

var url = opt.url;

var href = location.href;

// 判断是否跨域请求

var requestType = 'jsonp';

if (url.indexOf(location.host) > -1)

requestType = 'json';

requestType = opt.dataType || requestType;

// 是否异步请求

var async = (opt.async === undefined ? true : opt.async);

return {

url: url,

async: async,

type: opt.type || 'get',

dataType: requestType,

cache: false,

data: opt.data,

success: function(data, textStatus, xhr) {

/*

*如果dataType是json,怎判断返回数据是否为json格式,如果不是进行转换

* 成功数据通用格式

* {

* "code": 200,

* "data": [],

* "success": true // 成功

* }

* 失败返回的数据

* {

* "code": 200,

* "info": 'error',

* "success": false // 失败

* }

*/

if((requestType === 'json' || requestType === "jsonp") && typeof(data) === "string") {

data = JSON.parse(data);

}

if(data.success) {

opt.success(data);

}

if(opt.error) {

opt.error(data);

}

},

error: function(xhr, status, handler) {

if (opt.error)

opt.error();

}

};

};

function unescapeEntity(str) {

var reg = /&(?:nbsp|#160|lt|#60|gt|62|amp|#38|quot|#34|cent|#162|pound|#163|yen|#165|euro|#8364|sect|#167|copy|#169|reg|#174|trade|#8482|times|#215|divide|#247);/g,

entity = {

' ' : ' ',

' ' : ' ',

'<' : '<',

'<' : '<',

'>' : '>',

'&62;' : '>',

'&' : '&',

'&' : '&',

'"' : '"',

'"' : '"',

'¢' : '¢',

'¢' : '¢',

'£' : '£',

'£' : '£',

'¥' : '¥',

'¥' : '¥',

'€' : '€',

'€' : '€',

'§' : '§',

'§' : '§',

'©' : '©',

'©' : '©',

'®' : '®',

'®' : '®',

'™' : '™',

'™' : '™',

'×' : '×',

'×' : '×',

'÷' : '÷',

'÷' : '÷'

};

if (str === null) {

return '';

}

str = str.toString();

return str.indexOf(';') < 0 ? str : str.replace(reg, function(chars) {

return entity[chars];

});

}

// 转换html的实体

$.ajaxSetup({

global : true,

cache : false,

converters : {

'text json' : function(response){

return jQuery.parseJSON(unescapeEntity(response));

}

}

});

/*

*Ajax 请求权限异常

* 用户权限错误跳转登陆页

* 404错误跳转404页面

*/

$(document).ajaxComplete(function(evt, req, settings){

if(req && req.responseJSON){

var json = req.responseJSON;

if(json.code === 403 && json.info === 'perm error' && !json.success){

window.location.href = location.protocol + '//' + location.hostname;

return;

}

if(json.code === 404 && !json.success) {

window.location.href = location.protocol + '//' + location.hostname + '/404.html';

}

}

});

/*

*Ajax 请求错误提示

*例如:500错误

*返回错误信息格式

*{

* code: 500,

* info: 系统发生异常

*}

*/

$(document).ajaxError(function(evt, req, settings){

if(req && (req.status === 200||req.status === 0)){ return false; }

var msg = '错误:';

if(req && req.responseJSON){

var json = req.responseJSON;

msg += json.code||'';

msg += json.info||'系统异常,请重试';

}else{

msg = '系统异常,请重试';

}

alert(msg);

});

小结:

在执行Ajax请求时只需要调用ajaxSettings函数即可,如下:

代码如下:

$.ajax(ajaxSettings({

url: '',

data: ''

}))

以上所述就是本文的全部内容了,希望大家能够喜欢。

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map