Ajax成功功能不适用于laravel

时间:2017-03-30 05:30:25

标签: jquery ajax laravel

我的刀片视图 -

@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传递给我的控制器。

3 个答案:

答案 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*
];