3

有没有办法在页面的所有 ajax 请求中发送令牌,而无需在每个 $.ajax({}) 调用中写入它?

4

3 回答 3

0

首先,您必须在脚本行的开头进行设置:

    $(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;
                 }                           
             });
        });
    });
于 2014-05-19T22:17:16.750 回答
0

您可以全局设置 this
var token = "some value";

     $.ajaxSetup
        (
           {
               cache:false,
               beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
           }
        );

或者您可以在 beforesend 选项中单独设置特定请求。

    beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); }
           }
于 2012-11-28T15:22:04.230 回答
0

使用全局beforeSendAJAX 事件来修改任何 AJAX 请求:http ://docs.jquery.com/Ajax_Events

更新:我刚刚检查过,似乎这个事件将被弃用,所以改用这个: http: //api.jquery.com/jQuery.ajaxPrefilter/

于 2012-11-28T09:57:53.267 回答