【问题标题】:updating counter increment when click on link in laravel单击laravel中的链接时更新计数器增量
【发布时间】:2017-03-30 15:09:02
【问题描述】:

我在公共文件夹中有一个像这样的音频文件-

 @foreach ($songs as $song)
     <a href="{{asset('/audio/' . $song->song)}}" download="" >
        <button type="button" class="btn btn-xs btn-info download" style="margin-bottom: 15px;">
           <i class="glyphicon glyphicon-download">Download</i>
        </button>
     </a>
 @endforeach

所以,当我单击该按钮时,它会下载歌曲。我有一个歌曲数据库,我将歌曲和一列download_count 设置为默认值(0)。每次单击按钮时,我都想增加download_count。那么如何将此逻辑传递给控制器​​以更新数据库?

【问题讨论】:

  • 您可以调用控制器方法而不是文件。在这种方法中,您可以编写逻辑来将计数添加到数据库并动态下载文件。
  • 您可以在点击下载时创建一个下载方法,您将调用该下载方法。您可以使用计数器

标签: ajax laravel


【解决方案1】:

您可以通过 Ajax 简单地动态更新您的下载计数。

一个简单的例子:

@foreach ($songs as $song)
   <a href="{{asset('/audio/' . $song->song)}}">
     <button type="button" class="download" data-id="{{ $song->id}}">Download</button>
   </a>
@endforeach

<script>
$('.download').click(function(){
 $.ajax({
   url: "/update_download_count",
   type:"POST",
   data: {
     song_id:   $(this).attr('data-id')
   },
   success: function (data) {
     console.log(data);
   },
   error: function (request, status, error) {
     console.log('code: '+request.status+"\n"+'message: '+request.responseText+"\n"+'error: '+error);
   }
 });
});
</script>

您的路线:

Route::post('/update_download_count', 'SongController@updateDownloadCount');

您的控制器:

public function updateDownloadCount(){
 $song_id = $_POST['song_id'];
 // your database update logic
}

【讨论】:

  • 我写了我的控制器: public function updateDownloadCount(){ $song_id = $_POST['song_id']; $song->download_count += 1; $歌曲->保存(); } 但它仍然没有做任何事情,我的 download_count vaule 仍然是 0 :(
  • ajax 无法以某种方式更新我的数据库。我不知道为什么。
  • 没有错误..只是数据库没有更新..download_count似乎为0。我认为ajax调用有问题..
  • 如果您在控制台中收到错误 500,那是因为 laravel 需要在进行 ajax 调用之前验证 csrf 令牌。你应该有类似的东西: $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });某处
  • 有什么更新吗?很高兴结束这个问题:)
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2011-12-05
相关资源
最近更新 更多