Отправить форму, используя AJAX и JQuery - PullRequest
56 голосов
/ 08 января 2009

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

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

Ответы [ 3 ]

144 голосов
/ 08 января 2009

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

30 голосов
/ 08 января 2009

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

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

или

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

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

14 голосов
/ 03 мая 2009

Вот что сработало.

$("select").change(function(){
    $.get("/page.html?" + $(this).parent("form").find(":input").serialize()); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...