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

How to Toggle Boolean Value in a Database Using Jquery and ajax Laravel 5.4

我创建了一个按钮来批准 table 中的一行,但一切似乎都只是为了检查 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();

我怎样才能使上面的工作正常?

我会这样做的..

布尔列 condition 在您的数据库 table 中需要是 tinyInt 类型。

Fielddetails.php

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

routes/web.php

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

{id} 是您要更新的 table 的 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>

请注意每当用户想要点击批准时我处理点击事件的变化 link。

那是因为,我假设会有多个具有相同 link 的记录具有不同的 ID。

table.blade.php

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

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


参考,可以查看。它是关于使用 AJAX 删除记录,与你的问题不同,但它一定会帮助你。

快乐编码。干杯..