javascript - 如何使用 Jquery 和 ajax Laravel 5.4 切换数据库中的 bool 值

标签 javascript php jquery ajax laravel-5.4

我创建了一个按钮来批准表中的一行,但一切似乎都发生正确,只是检查并且 mysql 数据库 bool 列中没有更改

我的按钮

<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');

Controller 功能: “条件”是我在数据库中的 bool 列

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

$rpt->save();

如何才能使上述工作正常进行?

最佳答案

我会这样做..

数据库表中 bool 列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。

Controller

/**
 * 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 删除记录,与您的问题不同,但它肯定会对您有所帮助。

快乐编码。干杯..

关于javascript - 如何使用 Jquery 和 ajax Laravel 5.4 切换数据库中的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49290802/

相关文章:

jquery循环检查元素是否为空

javascript - 如何判断某个地方是否正在调用 JS 函数?

javascript - 我已经构建了自动完成输入框(但是foucsout有问题)

javascript - 当浏览器调整到特定高度时更改固定位置

php - 安卓和php

php - 应用CSS显示:none or use if(false){content} to block content at clients?

javascript - 按名称查找 cookie,然后使用 javascript(无 jquery)返回包含值的 cookie

javascript - 压缩数组作为对象的键和值

javascript - 在 JS 中调用 php var

javascript - 如何在 JavaScript 中请求网页