URL()使用jQuery ajax返回404

时间:2019-06-29 06:23:28

标签: jquery laravel laravel-5.8

我正在尝试使用JQuery ajax进行POST登录,但在route / web.php上返回404。使用routes / api.php返回相同的结果。

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

该代码在浏览器控制台中返回类似的内容

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

这有什么问题?我是laravel的新手。

2 个答案:

答案 0 :(得分:0)

您必须随请求一起传递CSRF令牌。 另外,您的刀片语法似乎无法正常工作,也许您的ajax请求不在刀片文件中

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

答案 1 :(得分:0)

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

问题是您在非刀片视图中使用刀片语法:{{ 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