Ajax post serialize () не включает имя и значение кнопки

Мой $ .ajax () не сериализует имя и значение кнопки.

У меня очень простая форма. Он имеет кнопку и текстовое поле.

Когда я вызываю $(this).serialize() , текстовое поле включено в строку, но не в кнопку.

 Debug.Log($(this).attr('id')); //== 'myform' Debug.Log("data: " + $(this).serialize()); //== data: txtBlah=hello 

Во время исследования я отметил, что с другими вопросами основной причиной было отсутствие элемента имени на кнопке. У меня есть элемент имени.

Я также попытался сделать очень простой который ничего не изменил.

решение, которое я использовал

 var buttonSubmit = (function (e) { e.preventDefault(); var form = $(this).closest('form'); form.attr('data-button-name', $(this).attr('value')); form.closest('form').submit(); }); 

serialize() jQuery serialize() довольно подробно описывает кнопки НЕ кодирования или вводит входы, потому что они не считаются «успешными элементами управления». Это связано с тем, что метод serialize () не имеет возможности узнать, какая кнопка (если есть!) Была нажата.

Мне удалось обойти эту проблему, щелкнув кнопку, сериализуя форму, а затем привязав к зашифрованному имени и значению нажатой кнопки к результату.

 $("button.positive").click(function (evt) { evt.preventDefault(); var button = $(evt.target); var result = button.parents('form').serialize() + '&' + encodeURI(button.attr('name')) + '=' + encodeURI(button.attr('value')) ; console.log(result); }); 

Вот комплексное решение, которое будет искать входные данные в форме кнопки. Если он существует, он установит значение, иначе он создаст скрытый ввод и установит его значение. Это также может быть полезно, если вы не хотите немедленно отправлять форму.

 $(document).on('click', '[name][value]:button', function(evt){ var $button = $(evt.currentTarget), $input = $button.closest('form').find('input[name="'+$button.attr('name')+'"]'); if(!$input.length){ $input = $('', { type:'hidden', name:$button.attr('name') }); $input.insertAfter($button); } $input.val($button.val()); }); 
  • Как перемещать дочерний элемент из одного родителя в другой с помощью jQuery
  • Как фильтровать возвращаемые данные из jQuery.ajax ()?
  • jQuery draggable + droppable: как привязать упавший элемент к включенному элементу
  • Получение пустого объекта JQuery
  • Как читать userData в jqgrid?
  • AJAX обещает использовать массив
  • Как реализовать диалог «подтверждения» в диалоговом окне JQuery UI?
  • JQuery-Mobile разворачивается развернуть / свернуть событие
  • Автозаполнение jQuery с обратным вызовом ajax json
  • jQuery не определен в bootstrap-sass
  • Как обрабатывать изменение флажка с помощью jQuery?
  • Interesting Posts

    Трекпадный жест для переключения на заголовок / источник

    Невозможно редактировать файлы в группе _www на OS X

    Объединение нескольких изображений с помощью ImageMagick

    Как я могу фильтровать Datatable?

    Django: реализация JOIN с использованием Django ORM?

    Необходимо, чтобы Woocommerce разрешала только 1 продукт в корзине. Если продукт уже находится в корзине, а еще один добавлен, он должен удалить предыдущие 1

    Как добавить reflection в приложение C ++?

    Как подтвердить, что почта была доставлена ​​или нет?

    О изображении и размерах Android

    C getline () – как работать с буферами / как читать неизвестное количество значений в массиве

    Цепочка метода + наследование плохо сочетается?

    структура против classа в быстром языке

    Ожидаемая декларация Ошибка при использовании Swift

    MVC5 (VS2012) Identity CreateIdentityAsync – значение не может быть нулевым

    Как установить имя процесса для Java-программы?

    Давайте будем гением компьютера.