我希望能够在点击某个项目时更新数据库,但我很难找到这个问题的答案。我知道有数百个类似的问题,但我无法得到一个特定于我的问题的答案,与laravel一起使用。
这是我更新数据库的途径:
Route::post('api/tasks/update/{id}', function($id) {
$task = App\Task::find($id);
$task->completed = Request::get('completed');
$task->save();
});
我只有一个无序列表,其中有一些li在我的视图中,一旦点击其中一个视图,我想在数据库中将特定值设置为0
或1
。< / p>
这是我的任务数据库表:
CREATE TABLE IF NOT EXISTS `tasks` (
`id` int(10) unsigned NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`completed` tinyint(1) NOT NULL DEFAULT '0'
)
正如您所看到的,它是一个简单的id
字段,name
字段和completed
字段。我的观点:
<ul>
@foreach($tasks as $task)
<li>{!! $task->name !!}</li>
@endforeach
</ul>
所以我基本上只需要一个正确指向实际AJAX调用的指针。
答案 0 :(得分:1)
我建议你使用GET
请求来调用ajax,首先将id绑定到li
元素
@foreach($tasks as $task)
<li data-id='{!! $task->id !!}'>{!! $task->name !!}</li>
@endforeach
并使用此jQuery函数:
$(document).ready(function(){
$('li').on('click', function(e){
$.ajax({
url: 'api/tasks/update/'+$(this).data('id'),
method: 'GET'
}).then(function(){
alert('success');
});
});
})
最后,改变你的路线从发布到获取。
Route::get(...