URL () возвращает 404 с использованием JQuery ajax - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь POST войти, используя JQuery ajax, но возвращаю 404 на маршрутах / web.php.При использовании маршруты / api.php возвращают то же самое.

маршруты / web.php

Route::post('dashboard/login', 'MsServiceAdvisorController@login');

маршруты / api.php

Route::post('ms-sa/login','MsServiceAdvisorController@login');

MsServiceAdvisorController @ login

public function login(Request $request) {
    $username = $request->username;
    $password = $request->password;

    $sa = msServiceAdvisor::where('username',$username)->get();
    $loginPassword = Crypt::decryptString($sa[0]['password']);
    if ($sa->count() == 0) {
        $result[] = array(
            'status' => 'username not found'
        );
    } else {
        if ($loginPassword == $password) {
            $result[] = array(
                'status' => 'success',
                'username' => $sa[0]['username'],
                'nama' => $sa[0]['nama'],
            );
        } else {
            $result[] = array(
                'status' => 'wrong password'
            );
        }
    }

    return $result;
}

Jquery ajax

$.ajax({
  url: "{{ url('/dashboard/login') }}",
  method: "post",
  data: $(this).serialize(),
  success: function(result) {
    console.log(result);
  }
});

Этот код возвращает что-то подобное в консоли браузера

POST http://127.0.0.1:8000/dashboard/%7B%7B%20url('/dashboard/login')%20%7D%7D 404 (Not Found)

Что с этим не так?Я новичок в Laravel.

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Если ваше представление вызова Ajax называется login.php и помещено в resources/views/, попробуйте переименовать этот файл как login.blade.php

Проблема в том, что вы используете синтаксис блейдов: {{ url('/dashboard/login') }} в представлении без блейдов.

В результате Laravel не анализирует этот файл, и вы печатаете не правильный URL, а команду blade в виде строки.

Из-за этого вы делаете HTTP-запрос к: http://127.0.0.1:8000/dashboard/{{ url('/dashboard/login'), который кодируется браузером, потому что он содержит некоторые специальные символы в URL.

Затем вы получите: http://127.0.0.1:8000/dashboard/%7B%7B%20url('/dashboard/login')%20%7D%7D

0 голосов
/ 29 июня 2019

Вы должны передать токен CSRF вместе с вашим запросом.Также ваш синтаксис blade-сервера, кажется, не работает должным образом, возможно, ваш запрос ajax отсутствует в файле blade-сервера

$.ajax({
  url: "{{ url('/dashboard/login') }}",
  headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}'},
  method: "post",
  data: $(this).serialize(),
  success: function(result) {
    console.log(result);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...