![](/img/trans.png)
[英]JavaScript form submit to database using Ajax and Laravel route
[英]Submit Laravel form using JavaScript
我有一个 HTML 表单,我目前使用表单操作属性和一个 php 脚本提交。 发布请求成功,但它重新加载了页面,我想避免这种情况。 该项目使用 Laravel/Blade PHP 模板。
<form
id="update-form"
method="post"
action="{{ route('update', ['id' => $user['id']]) }}"
>
@csrf
...
</form>
<button type="submit" form="update-form">Submit</button>
为了防止页面重新加载,我想使用 JavaScript 发送发布请求并使用preventDefault()
。 我尝试使用 fetch,但由于我对 Laravel 不熟悉,我不明白应该发送哪个参数。 例如,身体是什么?
有很多关于该主题的帖子,但大多数已经过时并导致使用 jQuery 解决方案,这对我来说不是一个选择。
这是我尝试过的:
document.querySelector('#update-form').addEventListener('submit', (e) => {
e.preventDefault();
fetch("{{ route('update', ['id' => $user['id']]) }}", {
method: 'post'
}).then(() => console.log('success'));
});
您可以使用FormData
对象获取表单字段和值,然后在body
字段中使用fetch
发送它。
FormData
将<form></form>
元素作为第一个参数并解析其字段和值
document.querySelector('#update-form').addEventListener('submit', (e) => {
e.preventDefault();
var formData = new FormData(e.target);
fetch("{{ route('update', ['id' => $user['id']]) }}", {
method: 'POST',
body: formData
}).then(() => console.log('success'));
});
当使用 JavaScript 将表单提交给路由操作时,例如 <form action={{route('something')}}> 数据(表单输入)作为 {$key => $value} 对象传递。 因此,在您的控制器中,您可以通过 input 的 name 属性获取数据单个输入字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.