【问题标题】:How to Toggle Boolean Value in a Database Using Jquery and ajax Laravel 5.4如何使用 Jquery 和 ajax Laravel 5.4 在数据库中切换布尔值
【发布时间】:2018-03-15 02:52:00
【问题描述】:

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

控制器功能: “条件”是我在数据库中的布尔列

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

$rpt->save();

我怎样才能使上述工作?

【问题讨论】:

    标签: javascript php jquery ajax laravel-5.4


    【解决方案1】:

    我会这样做..

    布尔列 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
    ];
    

    routes/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>
    

    请注意,每当用户想要点击批准链接时,我都会处理点击事件。

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

    table.blade.php

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

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


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

    快乐编码。干杯..

    【讨论】:

    • 我注意到我在问题中写了列而不是行。希望它不会引起干扰。谢谢
    猜你喜欢
    • 2017-03-05
    • 2017-05-30
    • 2020-01-07
    • 2023-02-07
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多