使用ajax调用更新数据库onclick

时间:2016-04-22 13:38:36

标签: javascript php jquery ajax laravel

我希望能够在点击某个项目时更新数据库,但我很难找到这个问题的答案。我知道有数百个类似的问题,但我无法得到一个特定于我的问题的答案,与laravel一起使用。

这是我更新数据库的途径:

Route::post('api/tasks/update/{id}', function($id) {
    $task = App\Task::find($id);

    $task->completed = Request::get('completed');

    $task->save();
});

我只有一个无序列表,其中有一些li在我的视图中,一旦点击其中一个视图,我想在数据库中将特定值设置为01。< / 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调用的指针。

1 个答案:

答案 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(...