我有一张有名字的表格 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条答案
按热度按时间fcy6dtqo16#
简单版本(不发送图像)
复制并粘贴表单或页面上所有表单的ajaxification
这是alfrekjv答案的修改版本
它将使用jquery>=1.3.2
您可以在文档准备好之前运行此操作
您可以删除并重新添加表单,它仍然可以工作
它将发布到与普通表单相同的位置,在表单的“action”属性中指定
javascript
我想编辑alfrekjv的答案,但偏离太多,所以决定将此作为单独的答案发布。
不发送文件,不支持按钮,例如单击按钮(包括提交按钮)将其值作为表单数据发送,但由于这是ajax请求,因此不会发送按钮单击。
要支持按钮,您可以捕获实际的按钮单击,而不是提交。
在服务器端,您可以使用jquery设置的这个头来检测ajax请求
HTTP_X_REQUESTED_WITH
对于phpphp
kt06eoxx17#
您也可以使用formdata(但在ie中不可用):
这就是如何使用formdata。
njthzxwz18#
有几件事你需要记住。
1.提交表格有几种方式
使用提交按钮
按回车键
通过在javascript中触发提交事件
可能更多取决于设备或未来设备。
因此,我们应该绑定到表单提交事件,而不是按钮单击事件。这将确保我们的代码现在和将来在所有设备和辅助技术上工作。
2.hijax
用户可能未启用javascript。hijax模式在这里很好,我们使用javascript轻轻地控制表单,但如果javascript失败,就让表单保持可提交状态。
我们应该从表单中提取url和方法,因此如果html发生更改,我们不需要更新javascript。
3.不引人注目的javascript
使用event.preventdefault()而不是return false是一种很好的做法,因为它允许事件冒泡。这允许其他脚本绑定到事件中,例如监控用户交互的分析脚本。
速度
理想情况下,我们应该使用外部脚本,而不是内联插入脚本。我们可以使用脚本标记在页面的标题部分链接到它,或者在页面底部链接到它以提高速度。脚本应该悄悄地增强用户体验,而不是妨碍用户。
代码
假设您同意以上所有内容,并且希望捕获submit事件,并通过ajax(一种hijax模式)处理它,您可以执行以下操作:
您可以随时通过javascript手动触发表单提交,方法如下:
编辑:
我最近不得不这样做,最后写了一个插件。
将数据自动提交属性添加到表单标记中,然后可以执行以下操作:
html
js
eoxn13cs19#
使用表单元素上定义的属性的另一个类似解决方案:
s71maibg20#
这是一个简单的参考: