我正在尝试使用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的新手。
答案 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