3

在某些情况下,我使用 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 中存在的“提交”值。

我在想我可以这样做:

$("form [data-autosubmit]").closest("form").find("input[type=submit]").click();

submit但是,当表单上有一个为此目的的事件时,它似乎违反了逻辑。

4

1 回答 1

3

HTMLform被构建为支持多个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...
}

如果 Javascriptsubmit()函数在数组中注册了两个按钮,POST它将破坏使用此有效标记/逻辑的应用程序,因此它们默认省略submit输入。

因此,您的 Javascript 解决方法(触发点击提交按钮,而不仅仅是submit()表单)是正确的方法。

于 2013-03-08T19:15:05.063 回答