ajaxSetup无法正常工作,其未添加默认变量字段

时间:2018-09-21 05:35:19

标签: jquery

当我使用$ .ajaxsetup并触发$ .post时,它没有将默认数据添加到帖子中。还是仅提供默认数据(如果未提供数据)?

 <script>
    window.csrf = { csrf_token: '<?php echo $_SESSION['csrf_token']; ?>' };
    $.ajaxSetup({
        data: window.csrf
    });
    $(document).ready(function() {
        // CSRF token is now automatically merged in AJAX request data.
        $.post('/awesome/ajax/url', { foo: 'bar' }, function(data) {
            console.log(data);
        });
    });
    </script>

3 个答案:

答案 0 :(得分:0)

如果您使用的是laravel,这是绑定csrf令牌的方法

在app.blade.php头中

<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">

在JS中。

// CSRF Token

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

答案 1 :(得分:0)

移动

$.ajaxSetup({
        data: window.csrf
    });

document.ready()中。

就像其他答案指出的那样,如果要发送csrf-token,则必须使用headers中的ajaxSetup键。

答案 2 :(得分:0)

您正在使用post方法传递数据,该方法将覆盖ajaxSetup中的数据

jQuery.post( url [, data ] [, success ] [, dataType ] )

$.post('/awesome/ajax/url', { foo: 'bar' }, function(data)

您应该在标头中传递它,请参考How can I add a custom HTTP header to ajax request with js or jQuery?

HTH