Laravel: обновление Ajax в базе данных - PullRequest
1 голос
/ 31 октября 2019

Я просто хочу обновить свои данные через ajax. Я получаю сообщение об ошибке. Ошибка консоли:

POST http://abc.local/teachers/users/1 404 (не найдено)

вот мой контроллер:

public function policyupdate(Request $request, $id)
              {

         $user = DB::table('users')->find($id);
        $user->update($request->all());
          return response()->json([
            'status' => 'success',
            'msg' => 'has been updated'
        ]);
         }

web.php:

Route::post('users/{user}','TeachersController@policyupdate') ;

js:

jQuery(document).ready(function(e)  {
  alert(1);
$('#update-policy').on('click', function(e) {
console.log('Update policy clicked!')
    e.preventDefault(e);

        $.ajax({
 type: "POST",
            url: "users/" + $('#update-policy').attr("value"),
        data:  $(this).serialize(),
        headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },

            success: function (data) {
          alert(updated);
              },

        });
    });
});

1 Ответ

2 голосов
/ 01 ноября 2019

Я замечаю только пару проблем.

url: "users/" + $('#update-policy').attr("value"),

В URL-адресе вызова ajax у вас нет косой черты в начале, поэтому URL будет относительно URL-адреса страницы. где находится функция, а не базовый URL. чтобы решить эту проблему, просто добавьте эту косую черту в начале

url: "/users/" + $('#update-policy').attr("value"),

Другой способ заключается в том, что у вас есть вход с методом put,

<input type="hidden" name="_method" value="put" />

, поэтому следует указать маршрут Laravel (это имеет смысл, если принять во внимание, что это маршрут для обновления)

Route::put('users/{user}','TeachersController@policyupdate') ;

Ну и, как вы сами обнаружили, с помощью построителя запросов метод update() работает, если вы запрашиваете с where()вместо find()

$user = DB::table('users')->where('id', $id)->update( $request->all() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...