问题描述:怎么设置ajax的通用设置
解决方法:通过$.ajaxSetup()函数来全局设置。
如果要处理$.ajax()得到的数据,则需要使用回调函数:beforeSend、error、success、complete等等。
$.ajaxSetup({
cache:false , // 不缓存该ajax请求的数据
})
问题描述:如果已在common.js设置ajax的全局属性如:
$.ajaxSetup({
cache : false,
type: 'POST',
beforeSend : function(xhr, params) { // 发送请求前触发
if(localStorage.length > 0 && localStorage.getItem("user")){
if (params.url.indexOf('?') == -1) {
params.url = params.url + "?userName=" + JSON.parse(localStorage.getItem("user")).loginName +"&token="+ localStorage.getItem("token")
} else {
params.url = params.url + "&userName=" + JSON.parse(localStorage.getItem("user")).loginName +"&token="+ localStorage.getItem("token")
}
return true;
}
}
});
那么,怎么在单独的某个ajax不使用该全局设置呢?
解决方法:在单个的ajax中重写设置好的属性(优先级覆盖)
问题描述:如果我既要使用设置好的全局属性,又要使用全局设置好的beforeSend,并且我还想在beforeSend中执行一些单个ajax需要执行的东西,该如何操作?
解决方法:
// 全局设置的beforeSend方法中判断单个里面是否有某方法,如果有执行,否则跳过
$.ajaxSetup({
cache : false,
type: 'POST',
beforeSend : function(xhr, params) { // 发送请求前触发
if(typeof this.ajaxBeforeSendCallback != 'undefined'){
this.ajaxBeforeSendCallback();
}
if(localStorage.length > 0 && localStorage.getItem("user")){
if (params.url.indexOf('?') == -1) {
params.url = params.url + "?userName=" + JSON.parse(localStorage.getItem("user")).loginName +"&token="+ localStorage.getItem("token")
} else {
params.url = params.url + "&userName=" + JSON.parse(localStorage.getItem("user")).loginName +"&token="+ localStorage.getItem("token")
}
return true;
}
}
});
// 单个需要在beforeSend中执行其他方法的ajax的使用
$.ajax({
url: url,
data: data,
dataType:"json",
ajaxBeforeSendCallback:function(){
// 在这里执行需要执行的方法
},
success: function(data){}
});