Ответ 1
Вот что получилось.
$("select").change(function(){
$.get("/page.html?" + $(this).parent("form").find(":input").serialize());
});
Кажется, что это должно быть что-то встроенное в 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>
Когда кто-то меняет поле select, я хотел бы отправить форму с помощью 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 очень, очень хорош.
Существует красивый плагин формы, который позволяет вам отправить HTML-форму асинхронно.
$(document).ready(function() {
$('#myForm1').ajaxForm();
});
или
$("select").change(function(){
$('#myForm1').ajaxSubmit();
});
отправить форму немедленно