【问题标题】:change status in database using ajax in laravel在 laravel 中使用 ajax 更改数据库中的状态
【发布时间】:2020-10-11 08:50:12
【问题描述】:

我在我的项目中使用 Laravel,所以我想在他与医生预约时更改患者的状态,这样他就可以有 3 个 satuts , Accept , waiting (当患者选择日期和时间时自动),不接受,我面临的问题是当我点击活动按钮时,数据库中没有任何变化。

这是状态的控制器:

public function changeStatus(Request $request)
{
    $user = rdv::where('IDP', $request->input('IDP'))->get();
    
    if (count($user) > 0) {
        if ($user->Etat_de_rdv == en_attente) {
            $user->Etat_de_rdv = Accepté;
        } else {
            $user->Etat_de_rdv = Reservé;
        }

        $user->Etat_de_rdv = $request->input('status');
        $user->save();

        return response()->json(['success' => 'Status change successfully.']);
    }
}

这是脚本:

  <script>

    $('.toggle-class').change(function () {
        var status = $(this).prop('checked') == true ? 'Accepter' : 'Temps charger';
        var id = $(this).data('IDP');
        console.log(id);
        console.log(status);
        $.ajax({
            type: "get",
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            url: 'changeStatus',
            data: {
                Etat_de_rdv: status, //Should be like this
                IDP: id
            },
            success: function (data) {
                console.log(data.success);
            }
        });
    });
</script>

这是医生看到所有预约的看法;

<h3> Vos patient :</h3>
@foreach($pat as $lo)
    @if ($lo->IDD== $med->ID)
        <div class="admin">
            <div class="info">
                <h3> {{ $lo->Nom_et_prénom  }} </h3>
                <p>{{ $lo->Numéro_de_téléphone }}</p>
                <p>{{ $lo->date}}</p>
                <p>{{ $lo->time }}</p>
                <input data-id="{{$lo->IPD}}" class="toggle-class" type="checkbox" data-onstyle="success"
                       data-offstyle="danger" data-toggle="toggle" data-on="Accepter"
                       data-off="Temps charger" {{ $lo->Etat_de_rdv ? 'checked' : '' }}>
            </div>
        </div>
    @endif
@endforeach 

*rdv mean : 约会表 *IDP : 患者 ID

【问题讨论】:

  • Accepté 还是"Accepté"?在你的控制器中
  • 我忘了" " @Viney
  • 没什么变化@Viney
  • 能否请您检查devtool当您单击活动按钮时是否出现任何ajax请求
  • 请您检查浏览器中的网络选项卡,以确认 AJAX 请求肯定会到达正确的 url(以及它是否返回 200 状态)。您能否也从您的routes/web.php 文件中添加代码。

标签: javascript sql ajax laravel


【解决方案1】:

-&gt;get(); 返回一个集合,而不是一个数组。因此,您应该改用$user-&gt;count() &gt; 0

编辑-&gt;get() 返回对象的集合。所以,你根本不能使用$user-&gt;Etat_de_rdv == en_attente。有两种方法可以解决这个问题。

  1. 如果您确定 IDP 条件总是会返回单个项目,那么您最好使用 -&gt;first() 而不是 -&gt;get(),并且您不需要更改内部 if 条件。

  2. 如果有多个用户,那么首先将变量重命名为 $users 然后像这样循环它$foreach($users as $user) { // your current code... }

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2020-04-16
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2019-08-17
    • 2021-12-31
    相关资源
    最近更新 更多