代码之家  ›  专栏  ›  技术社区  ›  kold-kreator

jquery和ajax甚至没有触发

  •  0
  • kold-kreator  · 技术社区  · 7 年前

    我有这段代码。 这是一份时事通讯的输入。

    <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正确返回代码和回声(我在网站的其他部分使用它)

    2 回复  |  直到 7 年前
        1
  •  0
  •   user8517929    7 年前

    只需将其添加为应答,您的按钮类型为button not submit,因此在使用输入类型submit或更改按钮类型以提交:d

        2
  •  0
  •   david    7 年前

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

    因为您已经将表单标记放入变量中,所以不需要使用 $ . 变化 $(form) 进入之内 form . 代码将如下所示。

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

    或者,如果不想将其存储到变量中,可以直接从jquery调用函数。

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