【问题标题】:Laravel Ajax cannot update database when click on a link单击链接时,Laravel Ajax 无法更新数据库
【发布时间】:2017-08-22 19:45:34
【问题描述】:

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

@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

所以,当我单击该按钮时,它会下载歌曲。在我的数据库中,在“歌曲”表中,有一列是歌曲,另一列是 download_count,它设置为默认值(0)。当我点击 ajax 链接时,我尝试更新 download_count。我的 ajax:

$(function() {
  $('.download').click(function(){
 $.ajax({
   url: "/update_download_count",
   type:"POST",
   data: {
     song_id:$(this).attr('data-id')
   }
  });
});
    }); 

我的路线:

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

控制器:

public function updateDownloadCount(){
         $song_id = $_POST['song_id'];
         $song->download += 1;
         $song->save();
}

但是,我无法更新我的数据库,但是我点击了链接。它仍然在 download_count 列中设置为 0。 lz帮忙看看怎么回事

【问题讨论】:

  • 第一步是不要在 laravel 中使用 $_POST[],注入你的请求并从你的请求变量中读取数据。 laravel.com/docs/5.4/requests
  • 你还没有为 $song 声明模态。请在下面使用 $song = Song::findOrFail($id);

标签: ajax database laravel


【解决方案1】:

您实际上并没有选择歌曲。

public function updateDownloadCount(Request $request) {
    $song = Song::find($request->input("song_id"));
    $song->download += 1;
    $song->save();
}

【讨论】:

    【解决方案2】:

    请为您的歌曲模式声明对象。

    public function updateDownloadCount() {
         $song = Song::findOrFail($_POST['song_id']);
         $song->download += 1;
         $song->save();
    }
    

    【讨论】:

      【解决方案3】:
      public function updateDownloadCount(Request $request){
           \DB::table('songs')->where('songs_id', $request->input("song_id"))->increment('download');
      }
      

      【讨论】:

      • 不工作,兄弟。我认为我的 ajax 调用有问题。想不通
      • dd($request->input("song_id"));检查值是否存在?
      【解决方案4】:

      代替

      $song->download += 1;
      

      试试:

      Song::find($request->input("song_id"))->increment('download');
      

      我觉得应该可以

      【讨论】:

        猜你喜欢
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        相关资源
        最近更新 更多