使用 .on("submit",

Posted

技术标签:

【中文标题】使用 .on("submit",【英文标题】:Jquery Ajax form using .on("submit", 【发布时间】:2012-01-27 01:42:45 【问题描述】:

我有一个页面,上面有几个 html 表单。下面是通过 ajax 调用提交表单的 jquery 代码。当提交内容 div 中的任何表单时,它确实会进行 ajax 调用。即使在通过 ajax 重新加载表单后它也会触发。我不知道如何将表单数据传递给处理函数。任何帮助将不胜感激。

澄清: var formData = $(this).serializeArray();不管用。 formData 没有从表单文件中获取值。

$.ajaxSetup(
  url: "ajax.php",
  type: 'POST',
  contentType: "application/json; charset=utf-8",
  datatype: 'json',
  cache: false,
  timeout : 5000
);
$("#content").on("submit", function(e) 
  e.preventDefault();
  var formData = $(this).serializeArray();
  $.ajax(
    data: formData,
    success: function(jsonData) 
        htmlData = jQuery.parseJSON(jsonData);
        $.each(htmlData, function(id, data)
            $("#"+id).html(data);
        );
    
);
;

更新:

如果我改变了

$("#content").on("submit", function(e)

$("#content").on("submit", "form", function(e)

表单数据被序列化,ajax 函数按预期工作。新的问题是如果表单不完整并且被重新加载(通过ajax)到内容分区中,提交事件不再触发该功能。我试图配置 .on() 以像 .live() 在早期版本的 jquery 中那样运行。它会在 ajax 重新加载后重新绑定提交事件。在这种情况下, .on() 不会重新绑定。希望这有点道理!

【问题讨论】:

请再解释一下你的问题,我不明白你的描述出了什么问题。 你的意思是如何访问服务器或客户端(javascript/jquery)上的数据? $(this).serializeArray();没有拾取表单数据。所以 formData 里面什么都没有。 如果序列化有问题,也向我们展示 HTML。 我也很好奇如何使用.on函数来提交动态加载表单的事件 【参考方案1】:

您需要通过 $_POST 全局变量获取 ajax.php 中传递的变量。

例如:

$myVar = $_POST['field_name'];

【讨论】:

这不是问题。 ajax 函数没有获取表单数据以将其发送到服务器。

以上是关于使用 .on("submit",的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 的 .on() 方法结合提交事件

按键修饰符

按键修饰符

禁用输入的 CSS 选择器 type="submit"

如何检索 textarea 的当前值?可以使用哪种方法代替 $("form").submit(function() ?

如何使用 input[type="submit"] 属性将 CSS 转换为 Styled-Components?