Jquery 和 AJAX 甚至没有触发

Jquery and AJAX not even triggering

我有这段代码。 这是新闻通讯的输入。

<form id="newsletter-form" name="newsletter-form" method="post" action="/newsletter">
  <div class="form-group">
    <label for="exampleInputEmail1"><span>Cadastre-se em nossa newsletter</span></label>
    <input type="email" class="form-control" id="newsletter-email" name="newsletter-email" placeholder="e-mail" value="">
  </div>
  <button class="btn btn-secondary btn-block" type="button"><i class="fas fa-paper-plane fa-fw mr-1"></i>Cadastrar</button>
</form>

很简单!

我有这个 JS:

$(function()
{
  var form = $('#newsletter-form');
  // ----------
  $(form).submit(function(form_response)
  {
    form_response.preventDefault();
    var formData = $(form).serialize();
    $.ajax({
      type: 'POST',
      url:  $(form).attr('action'),
      data: formData
    })
    .done(function(response)
    {
      $('#newsletter-email').removeClass('is-invalid');
      $('#newsletter-email').addClass('is-valid');
      $('#newsletter-email').val(response);
    })
    .fail(function(data)
    {
      $('#newsletter-email').removeClass('is-valid');
      $('#newsletter-email').addClass('is-invalid');
      if (data.responseText !== '')
      {
        $('#newsletter-email').val(data.responseText);
      }
      else
      {
        $('#newsletter-email').val('Ocorreu um erro!');
      }
    });
  });
});

我的 PHP 检查电子邮件是否有效,是否已插入等等。 PHP returns 代码和回显正确(我在我网站的其他部分使用它)

is:this 表单甚至没有触发 JS 到 运行 PHP。 它应该 运行 PHP 并在输入上添加有效或无效 class 并将反馈显示为值或占位符。

知道为什么它不起作用吗?

这是您的原始代码。 var form = $('#newsletter-form');

既然你把form标签放到了一个变量里,就不用再用了$。将 $(form) 更改为 form。代码将如下所示。

form.submit( /* some code */ );

或者如果不想存入变量,可以直接调用jquery中的函数。

$('#newsletter-form').submit( /* some code */ );

只是将其添加为答案,您的按钮类型不是按钮提交,因此要么使用输入类型提交,要么更改按钮类型以提交 :D