選択ドロップダウンメニューでフォームを使用する。ユーザーがオプションを選択すると、Ajax経由でajax.php
に投稿されます。ファイルは動的入力フィールドを返します。フォーム送信後に動的フォームフィールド値を保持する
<form action="form.php" method="post" id="myform">
<select name="raw_ids_array[]" class="select2" multiple="multiple" id="raw_ids_array"><option></option><option value="1">first</option><option value="2">second</option></select>
<div id="raws_list_hidden"><input type="text" name="dynamic_field"></div>
<input type="submit" id="submit_me" name="submit_me" value="go">
</form>
:
を<form action="form.php" method="post" id="myform">
<select name="raw_ids_array[]" class="select2" multiple="multiple" id="raw_ids_array"><option></option><option value="1">first</option><option value="2">second</option></select>
<div id="raws_list_hidden"></div>
<input type="submit" id="submit_me" name="submit_me" value="go">
</form>
この後のオプションが選択されているようform.php
に見える:form.php
はこの前にオプションが選択されているように見えます
<script>
$(function() {
function ajax_post_data(parameters) {
$.ajax({
method: "POST",
url: "ajax.php",
cache: false,
data: parameters,
success: function(data) {
$("#raws_list_hidden").html(data);
}
});
}
$('#raw_ids_array').on("change", function(e) {
parameters=$("#myform").serialize();
ajax_post_data(parameters);
});
});
</script>
ただし、フォーム提出が失敗した場合は、前に選択したオプション/入力した値を再度表示します。再びraws_list_hidden
DIVにform.php
が送信されると
$(document).ready(function() {
parameters=$("#myform").serialize();
ajax_post_data(parameters);
});
(「再読み込み」を取得します)raw_ids_array[]
からajax.php
にオプションを選択し、そのポスト、そしてダイナミックなフィールドを追加している:これを追加しました。ユーザーが入力した値dynamic_field
からは機能しない唯一のものはシリアル化されません。したがって、空になります。
コードを変更する必要があるため、動的フィールドの値もajax.php
にポストされますか?
P.S.
$('#submit_me').click(function() {
parameters=$("#myform").serialize();
ajax_post_data(parameters);
});
が、データがシリアル化されるので、それは有用ではないのですform.php
を投稿する前に、そのフォームは、(いくつかの無効な値が提出された場合には)失敗した場合、私は知らない。私は、コードを使用する場合、私はすべてのフィールドをシリアル化することができますか否か。
AJAXのポイントは、それはdoesnのことですページをリロードする必要があります。なぜフォームは、あまりにも提出するためにajaxを使用しないでください?その後、成功/失敗を提供し、送信されたデータを失わずにページをリロードすることができます。 – webbm
これは良い点ですが、フォームに動的フィールドを追加し、標準のHTML/PHP POSTを使用してフォームを送信するだけで、ajaxを使用することをお勧めします。 –