For some reason I'm not seeing an update to the DB even though there isnt any error.
We're using Laravel in class, I tried using the exact same codes from different classmates and somehow it doesn't work for me.
index.blade.php:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>This is your todo list</h1>
<ul>
@foreach($todos as $todo)
@if ($todo->status)
<input type = 'checkbox' id ="{{$todo->id}}" checked>
@else
<input type = 'checkbox' id ="{{$todo->id}}">
@endif
<li>
<a href = "{{route('todos.edit',$todo->id)}}">{{$todo->title}} </a>
</li>
@endforeach
</ul>
@can('manager')
<a href = "{{route('todos.create')}}">Add a new Todo </a>
@endcan
<script>
$(document).ready(function(){
$(":checkbox").click(function(event){
$.ajax({
url: "{{url('todos')}}" + '/' + event.target.id,
dataType: 'json',
type: 'put',
contentType: 'application/json',
data: JSON.stringify({'status':event.target.checked, _token:'{{csrf_token()}}'}),
processData: false,
success: function( data){
console.log(JSON.stringify( data ));
},
error: function(errorThrown ){
console.log( errorThrown );
}
});
});
});
</script>
@endsection
update function in the controller file:
public function update(Request $request, $id)
{
//only if this todo belongs to user
$todo = Todo::findOrFail($id);
//employees are not allowed to change the title
if (Gate::denies('manager')) {
if ($request->has('title'))
abort(403,"You are not allowed to edit todos..");
}
//make sure the todo belongs to the logged in user
if(!$todo->user->id == Auth::id()) return(redirect('todos'));
//test if title is dirty
$todo->update($request->except(['_token']));
if($request->ajax()){
return Response::json(array('result' => 'success1','status' => $request->status ), 200);
} else {
return redirect('todos');
}
}
nothing happens to the database, and no error message.