URL() return 404 使用 JQuery ajax

URL() return 404 using JQuery ajax

我正在尝试 POST 使用 JQuery ajax 登录,但在 routes/web.php 上 return 404。使用 routes/api.php return 同样.

routes/web.php

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

routes/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);
  }
});

该代码 return 在浏览器控制台中类似这样的代码

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

这有什么问题吗?我是 laravel.

的新手

您必须随请求一起传递 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);
  }
});

如果您的 Ajax 调用视图被称为 login.php 并被放入 resources/views/ 尝试将该文件重命名为 login.blade.php

问题是您在非 blade 视图中使用 blade 语法:{{ url('/dashboard/login') }}

因此 Laravel 没有解析那个文件,你也没有打印正确的 URL,而是 blade 命令作为一个字符串。

因此,您正在向 http://127.0.0.1:8000/dashboard/{{ url('/dashboard/login') 发出 HTTP 请求,该请求由浏览器编码,因为它在 url.

中包含一些特殊字符

您将获得:http://127.0.0.1:8000/dashboard/%7B%7B%20url('/dashboard/login')%20%7D%7D