代码之家  ›  专栏  ›  技术社区  ›  NWBoarder

Foundation 5反馈表单中的多封电子邮件

  •  1
  • NWBoarder  · 技术社区  · 11 年前

    我是一个初学者,但我已经为我的网站整理了一份反馈表。我遇到的问题是表单发送的是2封电子邮件,而不是1封。有什么想法导致这种情况吗?

    $('#myForm') 
        .on('valid.fndtn.abide', function () {
        var name = $("input#name").val();
        var email = $("input#email").val();
        var message = $("textarea#message").val();
    
        var dataString = 'name=' + name +
              '&email=' + email +
              '&message=' + message;
    
        $.ajax({
          type: "POST",
          url: "/contact/mail.php",
          data: dataString,
          success: function() {
            $('.contactform').html("<div id='thanks'></div>");
              $('#thanks').html("<h2>Thanks!</h2>")
              .append("<p>Dear "+ name +"!, We will get back to you as soon as we can.</p>")
              .hide()
              .fadeIn(1500);
          },
        });  //ajax call
        return false;
     });
    

    PHP:

    <?php
    
    $name = $_POST["name"];
    $email = $_POST["email"];
    $message = $_POST["message"];
    
    $msg = "
    
    Name: $name
    Email: $email
    Comments:
    $message
    ";
    
    $to = "email@example.com";
    $subject = "Website";
    $message = $msg;
    $headers = "Website";
    mail($to,$subject,$message,$headers);
    
    ?>
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   NWBoarder    11 年前

    显然,Foundation 5仍然包含一个旧的调用函数,该函数来自先前版本的“valid”vs“valid.fndtn.encore”,这导致它被调用两次。我可以通过以下更改来防止重复电子邮件:

    $('#myForm') 
    .on('valid.fndtn.abide', function (e) {
      if(e.namespace != 'abide.fndtn') {
        return;
      }
      var name = $("input#name").val();
      var email = $("input#email").val();
      var message = $("textarea#message").val();