javascript - 使用 javascript 提交 HTML 表单,但通过 ajax 发送
问题描述
是否可以使用form.submit()
并通过 ajax 提交表单而不是重定向 url?
这是我所拥有的:
var form = document.form
form.onsubmit = function() {
var params = {
type: "POST",
url: form.action
}
$.ajax(params).then(function(resp) {
// handle response
})
}
form.submit()
但是,提交不会触发回调,而是将浏览器重定向到form.action
url。如何避免重定向并通过 ajax 提交?
解决方案
只是不要form.submit()
直接调用和执行你的代码:
var form = document.getElementById('form');
var params = {
type: 'GET',
url: form.action
}
$.ajax(params).then(function (resp) {
console.log('ajax call successful');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="form" action="https://jsonplaceholder.typicode.com/todos/1">
</form>
如果您已经有一个form.onsubmit
处理程序并且绝对需要使用它,只需调用它(看起来有点难看,但确实可以):
var form = document.getElementById('form');
form.onsubmit = function () {
var params = {
type: 'GET',
url: form.action
}
$.ajax(params).then(function (resp) {
console.log('ajax call successful');
});
};
form.onsubmit();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="form" action="https://jsonplaceholder.typicode.com/todos/1">
</form>
GET
注意:为了这些示例的目的,将动词更改为。
推荐阅读
- azure - 如何修复 azure 函数中的连接 EADDRINUSE 错误
- php - mysqli_fetchall($result, MYSQLI_ASSOC) 返回空值的关联数组
- reactjs - 无法读取以 React 状态存储的 json 对象
- python-3.x - 在 Plotly 中向甘特图添加自定义标记
- java - 每次字符串与我的字符串数组中的元素匹配时尝试向变量添加计数
- reactjs - 不支持在 vite-cli 中添加本地包的“npm 链接”
- javascript - 将值分配给稍后将在不同脚本调用中使用的变量的正确方法是什么?
- php - 将firestore中的数据放入下一个php文件
- python-3.x - 如何在不使用任何库的情况下将 django rest 框架中的日志捕获到数据库?
- javascript - 使用 Response() 发送图像文件