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
我正在尝试 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