Javascript 使用ajax在表单外部使用按钮提交表单
我试图使用ajax发布一个表单,但当前的代码实际上不起作用。当我按下保存按钮时,表单被提交n+1次。i、 e刷新页面后它提交一次,下次我提交两个表单得到提交,第三次。。。等等 我已经花了很多时间研究这个问题(2天),我还没有发现一个与我所问的问题非常相似的问题 我在这里有一个陡峭的学习曲线,所以我希望有人能指出我做错了什么 我想我可能弄错了什么。提交的步骤是Javascript 使用ajax在表单外部使用按钮提交表单,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我试图使用ajax发布一个表单,但当前的代码实际上不起作用。当我按下保存按钮时,表单被提交n+1次。i、 e刷新页面后它提交一次,下次我提交两个表单得到提交,第三次。。。等等 我已经花了很多时间研究这个问题(2天),我还没有发现一个与我所问的问题非常相似的问题 我在这里有一个陡峭的学习曲线,所以我希望有人能指出我做错了什么 我想我可能弄错了什么。提交的步骤是 正在填写表单值 按下按钮以显示确认提交表单的模式(提交按钮实际上位于该模式内,而不是表单本身) 表格已提交 $('confirmYes'
$('confirmYes')。单击(函数(){
$(“#确认对象”).modal('hide');//关闭确认模式
$('#newForm')。提交(函数(e){
e、 预防默认值();
让formData=$(this.serialize();
美元邮政({
键入:“POST”,
url:“/api/pois/”,
数据:formData
})
取消
拯救
只需删除$('#newForm').submit(函数(e){});
:
.submit(函数(e){})
正在为表单的submit
事件创建事件处理程序,而不是提交它
$('#confirmYes').click(function() {
$('#confirm-object').modal('hide'); // close confirm modal
let formData = $('#newForm').serialize();
$.post({
type: 'POST',
url: '/api/pois/',
data: formData
});
});
问题是因为您在每次单击中都要创建一个新的
submit
事件处理程序。根据您要执行的操作的描述,您需要在页面加载时创建一个提交处理程序,并在单击按钮时触发它。如下所示:
$('#newForm').submit(函数(e){//处理提交事件
e、 预防默认值();
让formData=$(this.serialize();
美元邮政({
键入:“POST”,
url:“/api/pois/”,
数据:formData
})
})
$(“#confirmYes”)。单击(函数(){
$(“#确认对象”).modal('hide');
$('#newForm').submit();//触发提交事件
});
$('confirmYes')。单击(函数(){
让formData=$('#newForm').serialize();
美元邮政({
键入:“POST”,
url:“/api/pois/”,
数据:formData
});
);
取消
拯救
感谢您完成我希望的这项工作!感谢您指出我的错误并解释以前发生的事情,非常感谢。我仍然不太清楚提交处理程序是如何创建的,但我刚刚从日常工作中恢复过来,需要理清思路。我将对此做更多的研究=)。哦,是的,这现在更有意义了。谢谢!我尝试了这个例子,但它实际上没有提交任何表单,不知道为什么。是否是“保存”按钮有一个type=“提交”?但是,我将它改为“常规”按钮,这并没有什么区别。@Roy McCrossan的例子很有效。我们将尝试并理解其中的区别。