我有一个按钮,可以在我的数据库表中切换一个布尔值。它工作但每次重新加载页面,所以我想使用AJAX切换它。我不知道如何做一个可以为控制器提供所需ID的AJAX post请求。这就是我到目前为止所做的:
TaskController方法:
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的第一个任务):
{{ Form::open(array('action' => array('TaskController@updateCompleted', $task->id))) }}
{{ Form::hidden('_method', 'PATCH') }}
@if ($task->completed)
{{ Form::button('<span class="glyphicon glyphicon-ok"></span>', array('class'=>'btn btn-danger', 'type'=>'submit')) }}
@else
{{ Form::button('<span class="glyphicon glyphicon-remove"></span>', array('class'=>'btn btn-danger ajaxSubmit', 'type'=>'submit')) }}
@endif
{{ Form::close() }}
AJAX不起作用......
$('.ajaxSubmit').click(function(e) {
e.preventDefault();
$.ajax({
url: 'tasks/complete/{id}',
type: 'POST',
success: function(response)
{
console.log("working");
}
});
});
路线:
Route::patch('tasks/complete/{id}', 'TaskController@updateCompleted');
如何让Ajax工作?感谢
答案 0 :(得分:0)
试试这个 在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。