更新密码时,我在Laravel

时间:2019-12-04 08:24:57

标签: ajax laravel laravel-6

我正在尝试更新用户密码,但出现错误。

  

语法错误或访问冲突:1064您的SQL错误   句法;第1行的“其中name为空”(SQL:设置了更新users   name为空)

控制器

public function passwordupdate(Request $request, $id)
{
    $user = User::find($id);
    $user->password = Hash::make($request->password);
    $user->save();

    return response()->json([
        'msg' => 'Password has been Updated',
    ]);
}

路线

Route::post('teachers/policy', 'UsersController@passwordupdate')

从视图中,我正在通过Ajax请求将用户ID和名称发送给控制器。

Ajax

$('.update-password').on('click', function (e) {
    let user_id = $('#update-password').val();
    console.log('Update password clicked!')
    e.preventDefault();
    $.ajax({
        type: "POST",
        dataType: 'json',
        data: $(this).serialize(),
        url: "/users/" + $('#update-password').attr("value"),
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function (data) {
            if (data.msg) {
                $('#response').empty();
                $(".toast").toast('show');
                $('#response').append(data.msg);
            }
        }
    });
});

查看

<form id="password-form">
    <input type="hidden" value="">
    <table>
        <tr>
            <td class="text-nowrap">
                <select name="name" id="username" class="form-control border border-secondary border-dark" required>
                    <option selected value="">SELECT USER</option>
                    @foreach($users as $user)
                        <option value="{{ $user->name }}"> {{ $user->name }}</option>
                    @endforeach
                </select>
            </td>
            <td class="text-nowrap">
                <input type="text" name="password" placeholder="Type Password"
                       class="form-control border border-secondary border-dark">
            </td>
            <td class="text-nowrap">
                <button type="submit" class="btn btn-danger btn-sm update-password rounded text-center"
                        value="{{ $user->id }}" id="update-password">
                    <span class="fa fa-key"> </span> UPDATE PASSWORD
                </button>
            </td>
        </tr>
    </table>
</form>

3 个答案:

答案 0 :(得分:0)

您正在访问此端点:

/users/" + $('#update-password').attr("value") 

但是此终结点中没有$id作为url参数,因此您不会检索User

获取当前登录用户详细信息的方法是:

Auth::user()->id;

Auth类将返回您当前登录的用户详细信息

答案 1 :(得分:0)

我认为您应该尝试

$('#update-password').val()

确保将id“ update-password”放置在您的输入类型中[[password]]

希望回答您的问题

答案 2 :(得分:0)

将ID“更新密码”更改为“ update_password”

ID不应包含破折号(-)