Подтвердить что ты не робот

Отправить форму с помощью AJAX и jQuery

Кажется, что это должно быть что-то встроенное в 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());
});

Что мне не хватает?

4b9b3361

Ответ 1

Вот что получилось.

$("select").change(function(){
    $.get("/page.html?" + $(this).parent("form").find(":input").serialize()); 
});

Ответ 2

Сначала дайте вашей форме атрибут 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 очень, очень хорош.

Ответ 3

Существует красивый плагин формы, который позволяет вам отправить HTML-форму асинхронно.

$(document).ready(function() { 
    $('#myForm1').ajaxForm(); 
});

или

$("select").change(function(){
    $('#myForm1').ajaxSubmit();
});

отправить форму немедленно