封裝了jQuery的Ajax請(qǐng)求全局配置
摘要:
jQuery已經(jīng)成為項(xiàng)目中最常見(jiàn)的js庫(kù),也是前端開(kāi)發(fā)最喜歡使用的庫(kù)。下面是在項(xiàng)目中封裝了jQuery的Ajax,分享給大家。
代碼:
// ajax 請(qǐng)求參數(shù)
var ajaxSettings = function(opt) {
var url = opt.url;
var href = location.href;
// 判斷是否跨域請(qǐng)求
var requestType = 'jsonp';
if (url.indexOf(location.host) > -1)
requestType = 'json';
requestType = opt.dataType || requestType;
// 是否異步請(qǐng)求
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,怎判斷返回?cái)?shù)據(jù)是否為json格式,如果不是進(jìn)行轉(zhuǎn)換
* 成功數(shù)據(jù)通用格式
* {
* "code": 200,
* "data": [],
* "success": true // 成功
* }
* 失敗返回的數(shù)據(jù)
* {
* "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];
});
}
// 轉(zhuǎn)換html的實(shí)體
$.ajaxSetup({
global : true,
cache : false,
converters : {
'text json' : function(response){
return jQuery.parseJSON(unescapeEntity(response));
}
}
});
/*
*Ajax 請(qǐng)求權(quán)限異常
* 用戶權(quán)限錯(cuò)誤跳轉(zhuǎn)登陸頁(yè)
* 404錯(cuò)誤跳轉(zhuǎn)404頁(yè)面
*/
$(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 請(qǐng)求錯(cuò)誤提示
*例如:500錯(cuò)誤
*返回錯(cuò)誤信息格式
*{
* code: 500,
* info: 系統(tǒng)發(fā)生異常
*}
*/
$(document).ajaxError(function(evt, req, settings){
if(req && (req.status === 200||req.status === 0)){ return false; }
var msg = '錯(cuò)誤:';
if(req && req.responseJSON){
var json = req.responseJSON;
msg += json.code||'';
msg += json.info||'系統(tǒng)異常,請(qǐng)重試';
}else{
msg = '系統(tǒng)異常,請(qǐng)重試';
}
alert(msg);
});
小結(jié):
在執(zhí)行Ajax請(qǐng)求時(shí)只需要調(diào)用ajaxSettings函數(shù)即可,如下:
$.ajax(ajaxSettings({
url: '',
data: ''
}))
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- JQuery的Ajax請(qǐng)求實(shí)現(xiàn)局部刷新的簡(jiǎn)單實(shí)例
- jquery ajax請(qǐng)求方式與提示用戶正在處理請(qǐng)稍等
- Jquery Ajax請(qǐng)求文件下載操作失敗的原因分析及解決辦法
- 淺析jQuery Ajax請(qǐng)求參數(shù)和返回?cái)?shù)據(jù)的處理
- jQuery實(shí)現(xiàn)分頁(yè)功能(含ajax請(qǐng)求、后臺(tái)數(shù)據(jù)、附完整demo)
- jQuery Ajax請(qǐng)求后臺(tái)數(shù)據(jù)并在前臺(tái)接收
- jQuery取消ajax請(qǐng)求的方法
- jQuery+Ajax請(qǐng)求本地?cái)?shù)據(jù)加載商品列表頁(yè)并跳轉(zhuǎn)詳情頁(yè)的實(shí)現(xiàn)方法
- jQuery.Ajax()的data參數(shù)類型詳解
- 關(guān)于jQuery.ajax()的jsonp碰上post詳解
- jquery實(shí)現(xiàn)Ajax請(qǐng)求的幾種常見(jiàn)方式總結(jié)
相關(guān)文章
jquery實(shí)現(xiàn)移動(dòng)端懸浮拖拽框
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)移動(dòng)端懸浮拖拽框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02jQuery選擇沒(méi)有colspan屬性的td的代碼
為了試著用jQuery找出一個(gè)table中沒(méi)有colspan屬性的td,試了很多種方法,這個(gè)是最好的,記在這里,下次不要再忘了2010-07-07jquery對(duì)dom節(jié)點(diǎn)的操作【推薦】
下面小編就為大家?guī)?lái)一篇jquery對(duì)dom節(jié)點(diǎn)的操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-04-04JQuery創(chuàng)建DOM節(jié)點(diǎn)的方法
這篇文章主要介紹了JQuery創(chuàng)建DOM節(jié)點(diǎn)的方法,實(shí)例分析了jQuery創(chuàng)建元素結(jié)點(diǎn)、文本結(jié)點(diǎn)、屬性結(jié)點(diǎn)的相關(guān)技巧,需要的朋友可以參考下2015-06-06用jQuery實(shí)現(xiàn)優(yōu)酷首頁(yè)輪播圖
本文主要介紹了用jQuery實(shí)現(xiàn)優(yōu)酷首頁(yè)輪播圖的思路與方法。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-0110個(gè)基于jQuery或JavaScript的WYSIWYG 編輯器整理
10驚人的自由豐富的文本編輯器,將提升您的網(wǎng)站的功能。我已經(jīng)收集了5 jQuery和5個(gè)非jQuery實(shí)時(shí)評(píng)價(jià)附帶簡(jiǎn)單的功能,具有辦公一樣的功能。2010-05-05jquery創(chuàng)建一個(gè)ajax關(guān)鍵詞數(shù)據(jù)搜索實(shí)現(xiàn)思路
我們經(jīng)常需要在前臺(tái)頁(yè)面輸入關(guān)鍵詞進(jìn)行數(shù)據(jù)的搜索這已經(jīng)成為了一種習(xí)慣今天給大家分享一下如何使用 jQuery,MySQL和Ajax創(chuàng)建簡(jiǎn)單和有吸引力的Ajax搜索,感興趣的你可不要錯(cuò)過(guò)了哈2013-02-02jQuery實(shí)現(xiàn)對(duì)象轉(zhuǎn)為url參數(shù)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)對(duì)象轉(zhuǎn)為url參數(shù)的方法,涉及jQuery針對(duì)字符串的遍歷與轉(zhuǎn)換操作相關(guān)技巧,需要的朋友可以參考下2017-01-01