我使用
将所有请求发送到服务器$.ajax()
我想要做的是在发送到服务器之前向所有这些请求全局添加_csrf
令牌。
我正在查看该函数是jquery beforesend()
,但我不知道如何为所有ajax请求声明此函数
答案 0 :(得分:0)
请参阅http://api.jquery.com/Ajax_Events/
beforeSend()
是本地事件,如果要绑定发送所有ajax请求,可以使用ajaxSend()
document
为所有ajax请求触发。
$(document).bind("ajaxSend", function(){
//add your token
}
http://api.jquery.com/ajaxsend/
$(document).ajaxSend(function( event, jqxhr, settings ) {
console.log(setting.data); //get the data from settings and update it
});
答案 1 :(得分:0)
您想通过$.ajaxSetup设置默认值。
$.ajaxSetup({
beforeSend: function(xhr, settings) {
// Do something
}
});
答案 2 :(得分:0)
使用 $。ajaxPrefilter 的另一个选项,与$ .ajaxSetup相反,不会被来自您所有项目的单个$ .ajax调用覆盖:
(它使用jQuery Unserialize插件)
csrfData[csrfTokenName] = csrfToken;
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// Enhance data only on POST requests
if (originalOptions.type.toUpperCase() === 'POST'
|| options.type.toUpperCase() === 'POST'
) {
var originalData = $.unserialize(originalOptions.data);
var enhancedData = $.extend(originalData, csrfData);
options.data = $.param(enhancedData);
}
});