【发布时间】:2022-10-18 04:11:56
【问题描述】:
当尝试使用 javascript 捕获我的 Laravel 验证错误时,它一直以 html 格式而不是 json 格式为我提供数据,我的验证看起来很正常。注意我使用的是 vue.js 3,如果验证通过了控制器中的实际方法工作正常,这只是一个验证问题。
$request->validate([
'first_name' => ['required', 'string', 'min:3', 'max:255'],
'last_name' => ['required', 'string', 'min:3', 'max:255'],
'email' => ['required', 'email', 'min:3', 'max:255'],
'message' => ['required', 'string', 'min:3']
]);
我的获取方法如下:
fetch('/contact-us', {
method: 'POST',
headers: {
'CONTENT-TYPE': 'application/json'
},
body: JSON.stringify(this.form)
}).then((response) => response.text())
.then((data) => {
console.log(data);
//data = JSON.parse(data);
}).catch(function(error) {
console.log('Error: ' + error);
});
我的网络路线是:
Route::post('/contact-us', [IndexController::class, 'contactForm']);
html格式的错误是:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link href="/css/app.css" rel="stylesheet" />
<script src="/js/app.js" defer></script>
</head>
<body>
<style>
body{
margin: 0 !important;
overflow-x: hidden;
}
.container {
padding-top: 20px;
}
</style>
<div id="app" data-page="{"component":"ContactUs","props":{"errors":{"email":"The email must be a valid email address."},"csrf":"tFYwkcZZhNfeb2WXDwdnSv4dchujDvSvLfFGhHW1"},"url":"\/contact-us","version":"0f4e2ee0f7e2ca9da665d2f8035743df"}"></div></body>
【问题讨论】:
-
这可能是一个令牌问题。您是否使用 Sanctum 来验证您的前端应用程序?
-
它不是 api,该站点也没有登录系统。我已经让它使用手动验证类并手动返回 json 响应来工作,但这不是一个好方法,因为它使控制器看起来很乱。
标签: javascript laravel