我正在尝试在 laravel 中使用 ajax 更新我的数据库。当我单击按钮(切换按钮)时,它应该将数据库启用列从 1 更新为 0。
这是在 View 中编写的脚本
$(".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');
这里是 Controller 函数
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)
请帮我找出错误。
我什至改变了 Controller 方法如下
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 记录后
包含在头部
<meta name="csrf-token" content="{!! csrf_token() !!}" />
然后改变功能
$(".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",
});
});
关于javascript - 无法将ajax传递给 Controller 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40050007/