我在某些情况下使用jQuery自动提交表单。这是我的代码:
$("form [data-autosubmit]").closest("form").submit();
它有效,但它不会发送input type=submit
按钮的名称和值。
详细说明,以下代码:
<form method="POST">
<input type="text" name="input" value="text they entered">
<input type="submit" name="submit" value="Submit">
</form>
会在用户提交时发送以下POSTdata:
input: text they entered
submit: Submit
但是,当表单由JavaScript提交时,只发送此POSTdata:
input: text they entered
我的PHP脚本依赖于POSTdata中存在“submit”值。
我以为我能做到:
$("form [data-autosubmit]").closest("form").find("input[type=submit]").click();
但是,当表格上有submit
事件时,它似乎无视逻辑。
答案 0 :(得分:3)
HTML form
是为了支持多个submit
输入而构建的(例如,相同的表单可以有“插入”和“编辑”按钮)。因此,表单依赖于单击以在_POST
提交中实际注册所选字段。基本上,HTML允许使用如下形式的表单:
<form [...]>
<input type="submit" name="Insert" value="Insert">
<input type="submit" name="Update" value="Update">
</form>
在服务器端像这样处理:
if(!empty($_REQUEST['Update'])){
//Run update logic here..
}
elseif(!empty($_REQUEST['Insert'])){
//Run insert logic here...
}
如果Javascript submit()
函数在POST
数组中注册了两个按钮,则会使用此有效标记/逻辑破坏应用程序,因此它们默认省略submit
个输入。
因此,您的Javascript解决方法(触发单击提交按钮而不仅仅是submit()
表单)是正确的方法。