如何使用Jquery和ajax Laravel 5.4在数据库中切换布尔值

时间:2018-03-15 02:52:01

标签: javascript php jquery ajax laravel-5.4

我已经创建了一个按钮来批准表中的一行,但是所有内容似乎只是检查并且没有更改mysql数据库布尔列

我的按钮

<td><button><a href="/getapprove"><span class="approva" name="appro">Approve</span></a></button></td>

这是我的脚本部分

@section('scripts')
<script type="text/javascript">

$(document).ready(function(){
  $(".approva").click(function(e) {
    e.preventDefault();
    var id = $(this).closest('tr').attr('id');

    $.ajax({
            type:'POST',
            url:'/getapprove',
            headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
            data: {"id":id},
            success: function(data){

             console.log('changed successfully')


            }
        });
    });
});
</script>
@endsection

我的路线档案

Route::post('/getapprove','AdminalterdetailController@approve')->name('approved');

控制器功能: 'condition'是db

中的布尔列
public function approve(Request $request){
$rpt = Fielddetails::findOrFail($request->id);
if ($rpt->condition == 1){
    $rpt->condition = 0;
} else {
    $rpt->condition = 1;
}

$rpt->save();

我怎样才能完成上述工作?

1 个答案:

答案 0 :(得分:0)

我会这样做..

布尔列condition必须是数据库表中的tinyInt类型。

<强> Fielddetails.php

/**
 * The attributes that are mass assignable.
 *
 * @var  array
 */
protected $fillable = [
    'condition' // <-- make sure you have added this in your model file
];

<强>路由/ web.php

Route::get('/getapprove/{id}','AdminalterdetailController@approve')
    ->name('approved');

{id}是您希望更新的表的ID。

<强>控制器

/**
 * Approve the data of the given id.
 *
 * @param   integer  $id
 * @return  Your-Response-Or-Redirect
 */
public function approve($id, Request $request)
{
    $rpt = Fielddetails::findOrFail($id);

    if ($rpt->condition == true) {
        $rpt->update(['condition' => false]);
    }

    if ($rpt->condition == false) {
        $rpt->update(['condition' => true]);
    }

    // return your success response or redirect
}

<强>的jQuery

<script type="text/javascript">
    $('body').on('click', '.approva', function(e) {
        e.preventDefault();

        $.ajax({
            type: 'GET',
            url: $(this).attr('href'),
            success: function(data) {
                console.log(data);
            },
            error: function(err) {
                console.log(err);
            },
        });
    });
</script>

请注意,只要用户想要点击approva链接,我就会更改点击事件。

那是因为,我假设有多条记录,同一条链接有不同的id。

<强> table.blade.php

<td>
    <a href="{{ route('approved', $yourId) }}" class="button approva">
        Approve
    </a>
</td>

$yourId替换为您的实际记录ID。

要进行参考,您可以查看this question。它是关于使用AJAX删除记录,不像你的问题,但它肯定会帮助你。

快乐编码。干杯..