【发布时间】:2012-11-16 03:24:05
【问题描述】:
有没有一种方法可以在页面的所有 ajax 请求中发送令牌,而无需在每个 $.ajax({}) 调用中写入?
【问题讨论】:
有没有一种方法可以在页面的所有 ajax 请求中发送令牌,而无需在每个 $.ajax({}) 调用中写入?
【问题讨论】:
使用全局 beforeSend AJAX 事件修改任何 AJAX 请求:http://docs.jquery.com/Ajax_Events
更新:我刚刚检查过,似乎此事件将被弃用,因此请改用此事件:http://api.jquery.com/jQuery.ajaxPrefilter/
【讨论】:
您可以全局设置此
var token = "某个值";
$.ajaxSetup
(
{
cache:false,
beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
}
);
或者您可以在 beforesend 选项中单独设置特定请求。
beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
}
【讨论】:
首先,您必须在脚本行的开头进行设置:
$(function () {
var token = $('input[name="_csrf"]').val();
$(document).ajaxSend(function(e, xhr, options) {
console.log("ajax token!!!");
xhr.setRequestHeader('X-CSRF-Token', token);
});
});
然后您通常可以进行所有 ajax 调用...
$(function(){
$('#ddlGiro').change(function(){
var contentResult=document.getElementById('divComboComercio');
var giro = $("#ddlGiro").val();
$.ajax({
url: [[@{'/comun/comercios/obtener/'}]] + giro,
data: {"origen" : 'AsignarLote'},
dataType:'text',
cache:false,
type:'POST',
success:function(response){
contentResult.innerHTML=response;
}
});
});
});
【讨论】: