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 に答える