无法将ajax传递给控制器函数

Unable to pass ajax to controller function

本文关键字:控制器 函数 ajax      更新时间:2023-09-26

我正在尝试使用ajax在laravel更新我的数据库。当我点击按钮(切换按钮),它应该更新数据库启用列从1到0。

下面是在视图

中编写的脚本
$(".toggle-btn").change(function() {
    var id = $(this).attr('name'); // $(this) refers to button that was clicked
    $.ajax({
        url: '/adminpanel/dviulaan/stt',
        method: "post",
        data: {'id' : id} ,
        dataType: "json",
      });
});

这是我的路线

    Route::post('adminpanel/dviulaan/stt', 'AdminDvAnnouncement@status');
这是控制器函数
public function status()
{
    $id = Input::all();
 if (Request::ajax()) {
    DvAnnouncement::where('announcement_id', $id)->update(
        [
            'enable' => '0',
            'user_updated' => Auth::user()->id,
            'updated_at' => new DateTime,
        ]);
}
        $response = array(
            'status' => 'success',
            'msg' => 'Option created successfully',
        );
        return Response::json( $response );
}

当我点击按钮时,在控制台

中显示以下错误
POST http://localhost/adminpanel/dviulaan/stt 500 (Internal Server Error)

请帮我找出错误。

我甚至改变了控制器方法如下

public function status(Request $request)
    {
        $id = Input::get('id');
     if (Request::ajax()) {
        DvAnnouncement::where('announcement_id', $id)->update(
            [
                'enable' => '0',
                'user_updated' => Auth::user()->id,
                'updated_at' => new DateTime,
            ]);
    }
            $response = array(
                'status' => 'success',
                'msg' => 'Option created successfully',
            );
            return Response::json( $response );
    }

$id = Input::all(); => $id = Input::get('id');

UPD after logs

include in head

<meta name="csrf-token" content="{!! csrf_token() !!}" />

then change in function

$(".toggle-btn").change(function() {
  var id = $(this).attr('name'); // $(this) refers to button that was clicked
  $.ajax({
    url: '/adminpanel/dviulaan/stt',
    method: "post",
    data: {'id' : id, '_token': $('meta[name="csrf-token"]').attr('content')} ,
    dataType: "json",
  });
});