在我的项目中,我实现了这个功能:
public function createGuest(Request $request) {
$check1 = AdminUser::where('username', $request['user_name'])->count();
$previous = "localhost:8000";
if ($check1 > 0) return null; // user exists
$user = new AdminUser();
$user->username = $request['username'];
$user->password = $request['password'];
$user->save();
$user->roles()->attach('3');
return redirect($previous);
}
对于路线,我定义了这个:
$router->post('/guest-creates', [GuestController::class, "createGuest"])->name('createGuest');
运行 jQuery 代码后:
<body>
<form method="post" role="form" action="/create-guest" class="php-email-form">
..... HTML
<button type="button" class="btn btn-primary" onClick="signUps()">Đăng ký</button>
</form>
</body>
<script>
async function signUps() {
let url = "/create-guest";
let username = $("input[name=username]").val();
let password = $("input[name=password]").val();
let data = {
"_token" : "{{ csrf_token() }}",
"username" : username,
"password" : password,
}
let res = await $.post(url, data); //errors come here
}
</script>
res
变量现在拥有所有html页面,就像我点击它然后不再重定向一样?
res = "<!DOCTYPE html>
<html lang="zxx">
<head>
<meta charset="UTF-8">
<meta name="description" content="Ogani Template">
<meta name="keywords" content="Ogani, unica, creative, html">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="LOV3ISszq8gGw0ooUfoQZb39h16OX2y7TXw60us0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>This is home page</title>
<div id="fb-root"></div> ...."
并通知
500 (Internal Server Error)
如果我处理了redirect()->to()错误,是不是错了?为什么我无法使用 js 中的
async
POST 方法来重定向()->to()?
您收到 500(内部服务器错误),因为路由中的 URL 和 ajax 请求中的 URL 不同。所以你只需要在你的函数中通过下面给定的行更改这一行。
let url = "/guest-creates";