ajax设置参数编码,ajax重写和参数编码

该博客介绍了如何通过JavaScript重写jQuery的Ajax方法,以便在GET请求中对参数进行Base64编码,并在发送请求前添加跨站请求伪造(CSRF)令牌,增强了安全性和数据处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(function($){

//首先备份下jquery的ajax方法

var _ajax=$.ajax;

//重写jquery的ajax方法

$.ajax=function(opt){

//备份opt中beforeSend,error和success方法

var fn = {

error:function(XMLHttpRequest, textStatus, errorThrown){},

success:function(data, textStatus){},

beforeSend:function(XHR){}

}

if(opt.error){

fn.error=opt.error;

}

if(opt.success){

fn.success=opt.success;

}

if(opt.beforeSend){

fn.beforeSend=opt.beforeSend;

}

//对get请求中的参数base64加密后赋值给p(后台定义,后台处理)

if(opt.type == 'GET'){

var arr = opt.url.split('?');

if(arr.length > 1){

//解决有些url参数值中带有?

if(arr.length == 2){

opt.url = arr[0] + '?p=' + Base.encode(arr[1]);

}else{

var urlStr = '';

for(var i = 1;i

urlStr = urlStr + arr[i];

}

opt.url = arr[0] + '?p=' + Base.encode(urlStr);

}

}else{

if(opt.data){

var json = opt.data,str='';

for(var key in json){

str+=key + '=' + json[key] + '&';

}

opt.url = opt.url + '?p=' + Base.encode(str.substring(0,str.length-1));

opt.data = '';

}

}

};

//扩展增强处理

var _opt = $.extend(opt,{

error:function(XMLHttpRequest, textStatus, errorThrown){

//错误方法增强处理

fn.error(XMLHttpRequest, textStatus, errorThrown);

},

success:function(data, textStatus){

//成功回调方法增强处理

fn.success(data, textStatus);

},

beforeSend:function(xhr){

//提交前回调方法

//跨站请求伪造保护

var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();

xhr.setRequestHeader("X-CSRFToken", csrftoken);

fn.beforeSend(xhr);

},

complete:function(XHR, TS){

//请求完成后回调函数 (请求成功或失败之后均调用)。

$("#ajaxInfo").remove();;

}

});

return _ajax(_opt);

};

})(jQuery);

标签:opt,编码,arr,function,ajax,beforeSend,var,重写

来源: https://www.cnblogs.com/jiangweichen88/p/10509139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值