javascript - 使用 JavaScript 提交 Laravel 表单

标签 javascript php laravel forms

我有一个 HTML 表单,当前使用表单操作属性和 php 脚本提交。 post 请求成功,但它重新加载页面,我想避免这种情况。该项目使用 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 发送 post 请求并使用 preventDefault()。我尝试使用 fetch,但由于我不熟悉 Laravel,我不明白应该发送哪个参数。例如, body 是什么?

有很多关于这个主题的帖子,但大多数都已经过时并导致 jQuery 解决方案,这对我来说不是一个选择。

这是我尝试过的:

document.querySelector('#update-form').addEventListener('submit', (e) => {
  e.preventDefault();
  fetch("{{ route('update', ['id' => $user['id']]) }}", { 
    method: 'post'
  }).then(() => console.log('success'));
});

最佳答案

您可以使用FormData对象获取表单字段和值,然后使用 fetch 发送它在body字段。

FormData takes <form></form> element as first param and parses its fields and values

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 - 使用 JavaScript 提交 Laravel 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099774/

相关文章:

javascript - $(...).epoch 不是函数类型错误

javascript - 设置 CSS 高度属性以 chop 较大的部分

php - 登录后重定向至上一页

php - Postgresql 选择您可能认识的人,按共同 friend 的数量排序

php - 返回未插入 mysql 表中的数据

javascript - 数组更改时 VueJS dom 不刷新

mysql - 我可以使用 Eloquent /流利的方式按最大 id 更新单行吗

javascript - 通用 promise 重试逻辑

javascript - Kendo 窗口固定位置

javascript - Laravel 在 javascript 中从 Controller 获取两个值数组计数