これは、数行以上のコードを必要とせずにjQueryに組み込まれるものであるように思えますが、「単純な」ソリューションは見つかりません。たとえば、HTMLフォームがあるとします。
<form method="get" action="page.html">
<input type="hidden" name="field1" value="value1" />
<input type="hidden" name="field2" value="value2" />
<select name="status">
<option value=""></option>
<option value="good">Good</option>
<option value="bad">Bad</option>
</select>
</form>
誰かが選択フィールドを変更したら、ajaxを使用してフォームを送信し、データベースを更新したいと思います。私は、値/属性を手動で作成せずに、次のようにすべてを送信する方法があると考えました:
$("select").change(function(){
$.get("page.html?" + serializeForm());
});
私は何が欠けていますか?
これが最終的に機能したものです。
$("select").change(function(){
$.get("/page.html?" + $(this).parent("form").find(":input").serialize());
});
最初にフォームにid
属性を指定してから、次のようなコードを使用します。
$(document).ready( function() {
var form = $('#my_awesome_form');
form.find('select:first').change( function() {
$.ajax( {
type: "POST",
url: form.attr( 'action' ),
data: form.serialize(),
success: function( response ) {
console.log( response );
}
} );
} );
} );
したがって、このコードは.serialize()
を使用して、フォームから関連データを引き出します。また、重要な選択がフォームの最初の選択であると想定しています。
将来の参照のために、jQuery docs は非常に優れています。
Nice form plugin があり、HTMLフォームを非同期で送信できます。
$(document).ready(function() {
$('#myForm1').ajaxForm();
});
または
$("select").change(function(){
$('#myForm1').ajaxSubmit();
});
すぐにフォームを送信する