如果在事件中调用.post(),jquery .submit()vs jquery .click()的任何优点?

时间:2015-04-20 19:48:30

标签: javascript jquery html ajax forms

我有一个带有地址字段的模态窗口。我试图理解我是否需要在我的地址字段中包裹一个表单标记?

当我按下提交/保存按钮时,我正在调用.post()将地址发送给控制器,如果在Google地图中找到地址,我会更新/保存地址并将一些数据发回填写地图。我也关闭了模态。如果找不到地址,我只会显示错误消息。

我真的需要一个ajax.submit,这里有一个包裹在字段周围的表单标签吗? 它为我的坐姿提供了什么优势?

2 个答案:

答案 0 :(得分:1)

如果您没有表单标记,则不能仅将序列化表单对象作为参数传递,您必须手动创建数据对象以传递到提交对象。

你可以在你的ajax params中做data: $("#formId").serialize()

答案 1 :(得分:1)

如果你的dom中有一个典型的表格

<form id="myform" action="/someUrl" method="post">
    <!-- some fields -->
    <input type="submit" id="submitButton" value="Submit" />
</form>

然后在提交按钮中添加一个点击事件,两个事件都将触发(首先是点击事件,然后是提交事件)。

在这种情况下,您需要执行以下操作,以避免触发提交事件

$("#submitButton").on('click', function(event){
    event.preventDefault();
    //do necessary stuff.
}); 

考虑使用此方法只有当用户在处理表单提交的元素中“单击”时才会起作用,并且当按下“enter”键时,事件将不会触发。

我更喜欢永远使用FORM标签,对我来说至少更具可读性并且它有一些优点。

例如,我认为要获得所有值,您应该执行以下操作:

没有表格标签:

$( "input, textarea, select" ).serialize();

使用表单标记:

 $("#myForm").serialize();