Имя кнопки отправки не будет опубликовано при отправке формы при использовании jquery-form

У меня странная проблема, которая сводит меня с ума! Я хочу отправить HTML-форму с помощью ajax, используя jquery-form версии 3.46.0, а затем получить данные POST на сервере, но имя моей кнопки «Отправить» не будет отображаться в данных POST! Может быть, что-то не так с этой библиотекой?

Это мой код:

<form id="form" action="test.php" method="post">
  <input name="email" type="email" placeholder="Email" required>
  <!-- And yes! I didn't use an input with type submit because 
  I need my button to have some HTML content and applied css styles to them. -->
  <button id="submit" type="submit" name="myFormName">
    <span class="label">Submit</span>
  </button>
</form>
<div id="formResult" style="display: block; margin: 20px 0; padding: 10px; background-color: #fbe6e6;" role="alert"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="//oss.maxcdn.com/jquery.form/3.50/jquery.form.min.js"></script>
<script>
  jQuery(document).ready(function($) {

    $('#submit').on('click', function(e) {
      e.preventDefault();

      $('#form').ajaxSubmit({
        clearForm: true,
        target: '#formResult',
        success: function() {
          // do sth
        },
        error: function() {
          // do sth
        }
      });
    });
  });
</script>

А это файл test.php:

<?php
var_dump($_POST);

Мне нужно, чтобы имя моей кнопки «Отправить» отображалось в данных POST на сервере, как и ожидалось... Но это не так! У кого-нибудь есть идеи?


person Ali    schedule 17.02.2017    source источник
comment
Я не вижу никаких проблем на своей стороне, кнопка имеет вращающийся значок test.php показывает введенный адрес электронной почты   -  person Masivuye Cokile    schedule 17.02.2017
comment
Вы просто удаляете название кнопки name="myFormName"   -  person Nawin    schedule 17.02.2017
comment
Конечно, test.php показывает введенное электронное письмо... Но он не показывает имя кнопки отправки, включенной в данные POST. Если вы понимаете, о чем я?   -  person Ali    schedule 17.02.2017
comment
вы также хотите показать myFormName на test.php, когда я делаю var_dump($_POST);, кнопка действительно отображается   -  person Masivuye Cokile    schedule 17.02.2017
comment
И на самом деле мне нужно имя моей кнопки «Отправить» на стороне сервера... Поскольку я делаю с ней больше вещей! Мне просто интересно, почему HTML не отправляет имя кнопки «Отправить» с данными POST, хотя он должен это делать!   -  person Ali    schedule 17.02.2017
comment
Вы также можете показать свой код test.php @Ali   -  person Masivuye Cokile    schedule 17.02.2017
comment
Вы пытались присвоить кнопке value="foo"?   -  person Eamonn    schedule 17.02.2017
comment
Затем вы используете эту строку <button type="submit" name="myFormName" Value="myFormName">   -  person Nawin    schedule 17.02.2017
comment
@Ali Google html div внутри кнопки есть кое-что для вас   -  person Arsalan Mithani    schedule 17.02.2017
comment
stackoverflow.com/ вопросы/15885444/   -  person Eamonn    schedule 17.02.2017
comment
Я отредактировал свой вопрос... Теперь я каким-то образом уверен, что проблема связана с библиотекой jquery-form... Кажется, что она не отправляет имя кнопки «Отправить» в данные POST.   -  person Ali    schedule 17.02.2017
comment
так что в основном вы хотите, когда кнопка нажата, форма должна отображаться в div результатов? тогда кнопка должна иметь html-контент в результатах?   -  person Masivuye Cokile    schedule 17.02.2017
comment
Да, результаты сервера будут отображаться в DIV. Но мне в основном нужно, чтобы имя моей кнопки было внутри данных POST... Например, когда мы отправляем форму естественным образом, не используя ajax-библиотеку jquery-form.   -  person Ali    schedule 17.02.2017
comment
Вы пытались использовать более новую версию jQuery Form? В настоящее время это 4.2.1. По сравнению с версией 3.50, которую вы используете, появилось много изменений, в том числе совместимость с jQuery 3 и исправление для кнопки «Иногда отправить» не найдено github.com/jquery-form/form   -  person Kevin Morris    schedule 30.05.2017


Ответы (3)


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

person sujivasagam    schedule 17.02.2017

Мы можем решить это следующими способами:

  1. Используйте плагин формы jquery, и он опубликует все данные формы
  2. Если вы не используете вышеуказанный или какой-либо плагин, просто добавьте имя кнопки отправки в сериализацию формы, как показано ниже:
    $('#myForm').submit(function(event){
      event.preventDefault();
      $.ajax({
        type: "POST",
        url: "process.php",
        data: $('#myForm').serialize()+"&btnSubmitName=true",
        success: function(response){
          $('#resultDiv').html(response);
        }
      });
    });
person Muhammad Tarique    schedule 17.09.2019

<div><a href="javascript:foo1()">
<div class="holder"><span class="label">Submit</span></div>
<div class="loader"><i class="fa fa-circle-o-notch fa-spin"></i></div></a></div>

И реализуйте foo1 для отправки формы.

person viju1984    schedule 17.02.2017