当我使用$ .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>
答案 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