Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax在表单外部使用按钮提交表单_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 使用ajax在表单外部使用按钮提交表单

Javascript 使用ajax在表单外部使用按钮提交表单,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我试图使用ajax发布一个表单,但当前的代码实际上不起作用。当我按下保存按钮时,表单被提交n+1次。i、 e刷新页面后它提交一次,下次我提交两个表单得到提交,第三次。。。等等 我已经花了很多时间研究这个问题(2天),我还没有发现一个与我所问的问题非常相似的问题 我在这里有一个陡峭的学习曲线,所以我希望有人能指出我做错了什么 我想我可能弄错了什么。提交的步骤是 正在填写表单值 按下按钮以显示确认提交表单的模式(提交按钮实际上位于该模式内,而不是表单本身) 表格已提交 $('confirmYes'

我试图使用ajax发布一个表单,但当前的代码实际上不起作用。当我按下保存按钮时,表单被提交n+1次。i、 e刷新页面后它提交一次,下次我提交两个表单得到提交,第三次。。。等等

我已经花了很多时间研究这个问题(2天),我还没有发现一个与我所问的问题非常相似的问题

我在这里有一个陡峭的学习曲线,所以我希望有人能指出我做错了什么

我想我可能弄错了什么。提交的步骤是

  • 正在填写表单值
  • 按下按钮以显示确认提交表单的模式(提交按钮实际上位于该模式内,而不是表单本身)
  • 表格已提交
  • $('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的例子很有效。我们将尝试并理解其中的区别。