我的刀片视图 -
@foreach ($songs as $song)
<a href="{{asset('/audio/' . $song->song)}}" download="" >
<button type="button" class="download" style="margin-bottom: 15px;">
<i class="glyphicon glyphicon-download">Download</i>
</button>
</a>
@endforeach
我的ajax成功功能不起作用。它没有显示警报。因此我无法更新我的数据库。这是我的ajax:
$(function() {
$('.download').click(function(){
$.ajax({
url: "/update_download_count",
type:"POST",
data: {
song_id:$(this).attr('data-id')
},
success: function(data)
{
alert("ok");
}
});
});
});
那么,我的ajax电话有什么问题?我想点击链接并将id传递给我的控制器。
答案 0 :(得分:0)
Add a meta-tag to each page (or master layout):
<meta name="csrf-token" content="{{ csrf_token() }}">
And add to your javascript-file (or section within the page):
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
答案 1 :(得分:0)
尝试将dataType添加到您的ajax调用
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
...
dataType: "json",
success: function(){
..
}
});
并从控制器返回一个json对象。
return json_encode( $SomeData );
答案 2 :(得分:0)
这显然是Laravel的令牌不匹配错误。您应该始终向ajax函数添加错误处理程序,以确保是否发生了任何错误。有两种方法可以解决这个错误。
方法1 :(推荐)
在标题中添加一个csrf标记,如@kacem所述
方法2:仅当您从不同的域向运行在不同域或IP上的laravel服务器发出ajax请求时
转到app/Http/Middleware/VerifyCsrfToken.php
并在受保护变量中添加POST网址
protected $except = [
'post-urls-to-exclude-token-check',
'multiple-urls',
'or-wild-cards*
];