送信する直前に、要素のコピーを各フォームに挿入するだけです。このようにして、他のフォーム フィールドに影響を与えることなく、非表示のフォーム フィールドごとに異なる情報を持つことができます。
このようなもの:
<script type="text/javascript">
$(function() {
$('form').submit(function() {
$("#hidden_element").clone().appendTo(this);
});
});
</script>
新しいコピーを作成せずに両方のフォームにまったく同じ要素を使用する場合は、使用しないでくださいclone()
clone()およびappendTo()のドキュメントを参照してください
編集:
フォームが送信するすべてのリクエストで隠し要素を送信したくない場合。その間、そのユーザーのデータベースに保存することを検討してください。そのコンテンツを 1 回、ページのリロードごとに 1 回だけ送信してから、非表示の要素のデータベース ID をフォームの投稿ごとに送信するだけです。
ページの読み込み時に、次のようになります。
$.post("page.php", { reallyBigObject : $("#hiddenfield").val() }, function(insertedID){
$("#hiddenfield").val(insertedID);
});
次に、サーバー側のコードで:
//insert $_POST["reallyBigObject"] into databse
//get the just inserted id (in php it's done with mysql_insert_id())
//echo, or print the just inserted id, and exit
このようにして、js はコールバックを取得します。
これで、通常どおりにフォームを送信できますが、今回は ID (整数) のみをサーバーに送信しています。次に、サーバーからオブジェクトを削除するだけです (cron を実行して X 時間後に削除するか、別のリクエストを送信して削除します。
正直なところ、あなたが異議を唱えない限り(!!)、サーバーに2つのリクエストを単純に送信するよりも、1回だけ送信して保存する方がはるかに複雑だと思います.
他にご不明な点がございましたらお知らせください...