繁体   English   中英

电子邮件提交表格错误

[英]e-mail submit form error

我的页面上有一个用于电子邮件提交的表单,但找不到导致它阻止提交失败的原因。 以下是与表单有关的代码部分。 我绕过了js,只是直接使用了php脚本并发送了邮件,所以这似乎不是问题。 有任何想法吗?

js:

    $('#button-send').click(function(event){
        $('#button-send').html('Sending E-Mail...');
        event.preventDefault();

        $('html, body').scrollTo( $('#contact'), 'fast' );
        $.ajax({
            type: 'POST',
            url: 'send_form_email.php',
            data: $('#contact_form').serialize(),
            success: function(html) {
                if(html.success == '1')
                {
                    $('#button-send').html('Send E-Mail');
                    $('#success').show();
                }
                else
                {
                    $('#button-send').html('Send E-Mail');
                    $('#error').show();
                }                   
            },
            error: function(){
                $('#button-send').html('Send E-Mail');
                $('#error').show();
            }
        });

    });


});


function valemail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

这是PHP代码:

<?php 
// EDIT THE 2 LINES BELOW AS REQUIRED
$send_email_to = "me@myemail";
$email_subject = "New Message";
function send_email($name,$email,$email_message)
{
  global $send_email_to;
  global $email_subject;
  $headers = "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
  $headers .= "From: ".$email. "\r\n";
  $message = "<strong>Email = </strong>".$email."<br>";
  $message .= "<strong>Name = </strong>".$name."<br>";  
  $message .= "<strong>Message = </strong>".$email_message."<br>";
  @mail($send_email_to, $email_subject, $message,$headers);
  return true;
}

function validate($name,$email,$message)
{
  $return_array = array();
  $return_array['success'] = '1';
  $return_array['name_msg'] = '';
  $return_array['email_msg'] = '';
  $return_array['message_msg'] = '';
  if($email == '')
  {
    $return_array['success'] = '0';
    $return_array['email_msg'] = 'email is required';
  }
  else
  {
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email)) {
      $return_array['success'] = '0';
      $return_array['email_msg'] = 'enter valid email.';  
    }
  }
  if($name == '')
  {
    $return_array['success'] = '0';
    $return_array['name_msg'] = 'name is required';
  }
  else
  {
    $string_exp = "/^[A-Za-z .'-]+$/";
    if (!preg_match($string_exp, $name)) {
      $return_array['success'] = '0';
      $return_array['name_msg'] = 'enter valid name.';
    }
  }

  if($message == '')
  {
    $return_array['success'] = '0';
    $return_array['message_msg'] = 'message is required';
  }
  else
  {
    if (strlen($message) < 2) {
      $return_array['success'] = '0';
      $return_array['message_msg'] = 'enter valid message.';
    }
  }
  return $return_array;
}

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];


$return_array = validate($name,$email,$message);

if($return_array['success'] == '1')
{
    send_email($name,$email,$message);
}
header('Content-type: text/json')
echo json_encode($return_array);
die();
?>

以及我页面上的HTML:

        <form method="post" action="send_form_email.php" id="contactform">
            <div>
                <label for="name">Enter your name</label>
                <input type="text" class="input-field" id="name" name="name" value="">
            </div>
            <div>
                <label for="email">Enter your e-mail</label>
                <input type="text" class="input-field" id="email" name="email" value="">
            </div>
            <div>
                <label>Type Your Message</label>
                <textarea id="message" name="message"></textarea>
            </div>
            <a id="button-send" href="#" title="Send Email" class="button" style="width:100%;">Send E-Mail</a>
            <div id="success">Your message has been successfully!</div>
            <div id="error">Unable to send your message, please try later.</div>
        </form>

像这样的标头放分号('Content-type:text / json');

我花了一些时间对这段代码进行了故障排除,该代码是我前一段时间从eGrappler下载的HTML5主题的代码,因此,为节省像我一样偶然发现本文的其他人的时间,示例代码似乎还有另一个错误,并且可能不会工作。

在.js中,它指出

“数据:$('#contact_form')。serialize(),”

但是,HTML中表单的ID为“ contactform”,没有下划线

id =“ contactform”>“

它们需要匹配,否则帖子将不包含名称,电子邮件地址或消息,并且电子邮件将永远不会发送。

希望这可以避免其他人从我所做的调试中..最终到达那里,但这是一个学习上的弯路!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM