【问题标题】:Why is my <select> value not being posted in email为什么我的 <select> 值没有在电子邮件中发布
【发布时间】:2012-03-03 18:52:39
【问题描述】:

这是我使用的表格:

<form action="scripts/contactscript.php" method="post" id="contactform">
  <ol>
    <li>
      <label for="name">Your Name <span class="red">*</span></label>
      <input id="name" name="name" class="text" />
    </li>
    <li>
      <label for="email">Your email <span class="red">*</span></label>
      <input id="email" name="email" class="text" />
    </li>
    <li>
      <label for="interested">Interested In <span class="red">*</span></label>
      <select id="interested" name="interested">
        <option value="">-- Please Select --</option>
        <option value="GeneralInformation">General Information</option>
        <option value="PurchasingABike">Purchasing A Bike</option>
      </select>
    </li>
    <li>
      <label for="message">Message <span class="red">*</span></label>
      <textarea id="message" name="message" rows="6" cols="50"></textarea>
    </li>
    <li class="buttons">
      <input type="image" name="imageField" id="imageField" src="images/send.gif" class="send" />
      <div class="clr"></div>
    </li>
  </ol>
</form>

这是它发布到的脚本:

<?php
if(!$_POST) exit;
$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
    $error.="Invalid email address entered";
    $errors=1;
}

if($errors==1) echo $error;
else{
    $values = array ('name','email','message','interested');
    $required = array('name','email','message');

    $your_email = "jon.harding@webedgemedia.com";
    $email_subject = "Little Bike Riders Message: ".$_POST['subject'];
    $email_content = "New message:\n\n";

    foreach($values as $key => $value){
      if(in_array($value,$required)){
          if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
      }
        $email_content .= $value.': '.$_POST[$value]."\n\n" ;
    }


    if(@mail($your_email,$email_subject,$email_content)) {
        echo 'Message sent!'; 
    } else {
        echo 'ERROR!';
    }
}
?>

这是发送时电子邮件中显示的内容:

新消息:

姓名:乔恩·哈丁

电子邮件:jon@email.com

消息:测试

有兴趣:

【问题讨论】:

  • $email_content 看起来像什么?当你var_dump($_POST)时,你看到interested的值了吗?
  • 我看到了添加的内容。 var_dump($_POST) 怎么样?另外,将默认选项从空字符串 "" 更改为其他内容,以查看它是否正在通过。
  • 关于eregi() 的注释,顺便说一句...您使用preg_match() 的第一直觉是好的。 ereg() 系列函数很快就会完全变成 deprecated and may be removed

标签: php html email


【解决方案1】:

您在提交表单时选择了默认条目-- Please Select --,该表单具有选项值"",并且显示在您的电子邮件中。我已经在本地尝试过您的示例,如果我选择其他选项之一,它就可以工作。

编辑:

您正在使用以下代码提交表单:

jQuery(document).ready(function(){
    $('#contactform').submit(function(){                  
        var action = $(this).attr('action');
        $.post(action, { 
            name: $('#name').val(),
            email: $('#email').val(),
            subject: $('#subject').val(),
            message: $('#message').val()
        },
            function(data){
                $('#contactform #submit').attr('disabled','');
                $('.response').remove();
                $('#contactform').before('<p class="response">'+data+'</p>');
                $('.response').slideDown();
                if(data=='Message sent!') $('#contactform').slideUp();
            }
        ); 
        return false;
    });
});

您忘记将感兴趣的元素 interested: $('#interested').val() 的值添加到您传递给 $.post 方法的对象中。

【讨论】:

  • 我已经更改了空字符串,但它仍然无法在服务器上运行
  • 是否存在与之冲突的服务器设置?
  • 您正在使用 jQuery 提交表单,但忘记将感兴趣元素的值添加到您传递给 $.post 方法的对象中。
  • 救命稻草迈克尔!不敢相信我没有抬头看!
猜你喜欢
  • 2015-03-15
  • 2014-01-08
  • 2021-09-22
  • 1970-01-01
  • 2015-11-13
  • 2023-04-06
  • 2016-04-25
  • 2013-10-27
  • 2016-05-02
相关资源
最近更新 更多