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

У меня странная проблема, которая сводит меня с ума! Я хотел бы отправить 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 на сервере, как и ожидалось... Но это не так! У кого-нибудь есть идеи?

2 ответа

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

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

  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);
        }
      });
    });
<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 для отправки формы.

Другие вопросы по тегам