使用Ajax实现传递ID的控制器方法
我有一个按钮,可以在DB表中切换布尔值。它可以工作,但每次都会重新加载页面,所以我想使用AJAX切换它。我不确定如何执行AJAX post请求,以便为控制器提供所需的ID。这就是我到目前为止所做的: TaskController方法:使用Ajax实现传递ID的控制器方法,ajax,laravel,laravel-5,Ajax,Laravel,Laravel 5,我有一个按钮,可以在DB表中切换布尔值。它可以工作,但每次都会重新加载页面,所以我想使用AJAX切换它。我不确定如何执行AJAX post请求,以便为控制器提供所需的ID。这就是我到目前为止所做的: TaskController方法: public function updateCompleted($id) { $task = Task::findOrFail($id); if($task->completed) { $task->comp
public function updateCompleted($id)
{
$task = Task::findOrFail($id);
if($task->completed) {
$task->completed = false;
} else {
$task->completed = true;
}
$task->save();
Session::flash('message', 'Task updated!');
return redirect('tasks');
}
用于切换的按钮(在本例中,是ID为1的第一个任务):
路线:
Route::patch('tasks/complete/{id}', 'TaskController@updateCompleted');
如何让Ajax工作?谢谢你试试这个
例如,在id为“myid”的隐藏输入中添加id
$('.ajaxSubmit').click(function(e) {
var data = $("#myid").val();
e.preventDefault();
$.ajax({
url: '/tasks/complete',
type: 'POST',
data: data,
success: function(response)
{
console.log("working");
}
});
});
这样做
Route::post('tasks/complete', 'TaskController@updateCompleted');
不要忘记CSRF。我已经尝试过了,但现在收到了“405(不允许使用方法)”错误。由于这是一个补丁请求,我认为“type”应该是“patch”,所以我尝试了一下,它返回一个“500(内部服务器错误)”。有什么想法吗?很可能是crsf,谷歌总是会在ajax请求中使用它(在app/http/kernel.php中评论crsfmiddlware,看看它是否真的解决了这个问题)
$('.ajaxSubmit').click(function(e) {
var data = $("#myid").val();
e.preventDefault();
$.ajax({
url: '/tasks/complete',
type: 'POST',
data: data,
success: function(response)
{
console.log("working");
}
});
});
Route::post('tasks/complete', 'TaskController@updateCompleted');