我有一张有名字的表格 orderproductForm
和未定义数量的输入。
我想做一些jquery.get或ajax之类的事情,通过ajax调用页面,并发送表单的所有输入 orderproductForm
.
我想一种方法是做类似的事情
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
然而,我并不完全知道所有的表单输入。是否有只发送所有表单输入的特性、函数或其他东西?
20条答案
按热度按时间rvpgvaaj1#
您可以使用ajax表单插件中的ajaxform/ajaxsubmit函数或jquery序列化函数。
ajaxform:
或
当按下提交按钮时,ajaxform将发送。ajaxsubmit立即发送。
序列化:
这里有ajax序列化文档。
s71maibg2#
这是一个简单的参考:
eoxn13cs3#
使用表单元素上定义的属性的另一个类似解决方案:
njthzxwz4#
有几件事你需要记住。
1.提交表格有几种方式
使用提交按钮
按回车键
通过在javascript中触发提交事件
可能更多取决于设备或未来设备。
因此,我们应该绑定到表单提交事件,而不是按钮单击事件。这将确保我们的代码现在和将来在所有设备和辅助技术上工作。
2.hijax
用户可能未启用javascript。hijax模式在这里很好,我们使用javascript轻轻地控制表单,但如果javascript失败,就让表单保持可提交状态。
我们应该从表单中提取url和方法,因此如果html发生更改,我们不需要更新javascript。
3.不引人注目的javascript
使用event.preventdefault()而不是return false是一种很好的做法,因为它允许事件冒泡。这允许其他脚本绑定到事件中,例如监控用户交互的分析脚本。
速度
理想情况下,我们应该使用外部脚本,而不是内联插入脚本。我们可以使用脚本标记在页面的标题部分链接到它,或者在页面底部链接到它以提高速度。脚本应该悄悄地增强用户体验,而不是妨碍用户。
代码
假设您同意以上所有内容,并且希望捕获submit事件,并通过ajax(一种hijax模式)处理它,您可以执行以下操作:
您可以随时通过javascript手动触发表单提交,方法如下:
编辑:
我最近不得不这样做,最后写了一个插件。
将数据自动提交属性添加到表单标记中,然后可以执行以下操作:
html
js
kt06eoxx5#
您也可以使用formdata(但在ie中不可用):
这就是如何使用formdata。
fcy6dtqo6#
简单版本(不发送图像)
复制并粘贴表单或页面上所有表单的ajaxification
这是alfrekjv答案的修改版本
它将使用jquery>=1.3.2
您可以在文档准备好之前运行此操作
您可以删除并重新添加表单,它仍然可以工作
它将发布到与普通表单相同的位置,在表单的“action”属性中指定
javascript
我想编辑alfrekjv的答案,但偏离太多,所以决定将此作为单独的答案发布。
不发送文件,不支持按钮,例如单击按钮(包括提交按钮)将其值作为表单数据发送,但由于这是ajax请求,因此不会发送按钮单击。
要支持按钮,您可以捕获实际的按钮单击,而不是提交。
在服务器端,您可以使用jquery设置的这个头来检测ajax请求
HTTP_X_REQUESTED_WITH
对于phpphp
xqk2d5yq7#
这段代码甚至可以用于文件输入
pdsfdshx8#
我非常喜欢superluminary的回答,尤其是他在jquery插件中 Package 解决方案的方式。因此,感谢超光速技术提供了一个非常有用的答案。不过,在我的例子中,我想要一个插件,它允许我在初始化插件时通过选项定义成功和错误事件处理程序。
下面是我的想法:
这个插件允许我非常轻松地在页面上“ajaxify”html表单,并提供onsubmit、success和error事件处理程序,以实现对用户表单提交状态的反馈。这允许按如下方式使用插件:
请注意,成功和错误事件处理程序接收的参数与您从jqueryajax方法的相应事件接收的参数相同。
j8yoct9x9#
我得到了以下信息:
哪里
这假设发送到“url”的帖子以
{success: false, error:'my Error to display'}
你可以随意改变。请随意使用这个片段。ee7vknir10#
jQueryAjax提交表单,就是在单击按钮时使用表单id提交表单
请遵循以下步骤
步骤1-表单标签必须有一个id字段
要单击的按钮
步骤2-提交事件在jquery中,它有助于提交表单。在下面的代码中,我们准备从html元素名发出json请求。
现场演示请点击下面的链接
如何使用jquery ajax提交表单?
omjgkv6w11#
我知道这是一个
jQuery
相关问题,但现在使用JSES6的日子要容易得多。因为没有纯净的水javascript
回答,我想我可以加一个简单的纯javascript
我认为,通过使用fetch()
应用程序编程接口。这是一种实现网络请求的现代方法。在您的情况下,因为您已经有一个表单元素,所以我们可以简单地使用它来构建我们的请求。z4iuyo4d12#
尝试
5fjcxozz13#
考虑使用
closest
```$('table+table form').closest('tr').filter(':not(:last-child)').submit(function (ev, frm) {
frm = $(ev.target).closest('form');
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert(data);
}
})
ev.preventDefault();
});
s6fujrry14#
您可以使用下面的提交功能。
HTML表单
jquery函数:
有关更多详细信息和样本,请访问:http://www.spiderscode.com/simple-ajax-contact-form/
kgqe7b3p15#
要避免多次发送formdata,请执行以下操作:
不要忘记取消绑定提交事件,在再次提交表单之前,用户可以多次调用sumbit函数,可能是他忘记了什么,或者是验证错误。