You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将表单下拉选框选中值通过POST方法发送至邮箱

问题核心原因

  1. PHP侧获取下拉框值的逻辑被包裹在if(isset($_POST['send']))判断中,而你用AJAX提交表单时并未传递send参数,导致下拉框值未被正确赋值,无法带入邮件内容。
  2. 代码中存在大量无用的冗余变量,既影响排查也无实际作用。
  3. JS提交时多传了不存在的value字段,属于无效参数。

具体修改方案

1. 修改PHP代码

首先删除所有冗余变量,修改下拉框值的获取逻辑:

<?php
if(!$_POST) exit;

// 邮箱验证函数保留不动
function isEmail($email) {
    return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

// 原有业务字段保留
$name      = $_POST['name'];
$email     = $_POST['email'];
$comments  = $_POST['comments'];
$dod       = $_POST['dod'];
$yourname  = $_POST['yourname'];
$tel       = $_POST['tel'];
$caddy     = $_POST['caddy'];
$cpost     = $_POST['cpost'];
$daddy     = $_POST['daddy'];
$dpost     = $_POST['dpost'];
$dofd      = $_POST['dofd'];

// 删除原来的$Car、$Small等所有无用变量,直接获取下拉框值
$vehicles = isset($_POST['vehicles']) ? htmlspecialchars(trim($_POST['vehicles'])) : '未选择车型';

// 删掉原来包裹$value赋值的if(isset($_POST['send']))逻辑、以及判断vehicles等于motor输出的冗余代码

// 后面的表单验证、邮箱配置逻辑保留不动,仅修改邮件内容部分
$e_content = 
"
Company: $name
Name of Person: $yourname
Contacts email: $email
Contacts Telephone Number: $tel

Desired Collection Date: $dod
Drop Off Deadline: $dofd

Collection Address: $caddy
Collection Post Code: $cpost

Destination Address: $daddy
Destination Post Code: $dpost 

Addtional Information: $comments

选择的车型:$vehicles
" . PHP_EOL . PHP_EOL;

// 后面发邮件的逻辑全部保留不动即可
?>

2. 修改JS代码

删除提交参数里多余的value字段,没有对应表单元素不需要传递:

//Contact
$('#working_form').submit(function() {
    var action = $(this).attr('action');
    $("#message").slideUp(750, function() {
        $('#message').hide();
        $('#submit')
            .before('<img src="" class="gif_loader" />')
            .attr('disabled', 'disabled');
        $.post(action, {
                name: $('#name').val(),
                email: $('#email').val(),
                comments: $('#comments').val(),
                dod: $('#dod').val(),
                dofd: $('#dofd').val(),
                yourname: $('#yourname').val(),
                cpost: $('#cpost').val(),
                caddy: $('#caddy').val(),
                tel: $('#tel').val(),
                daddy: $('#daddy').val(),
                dpost: $('#dpost').val(),
                vehicles: $('#vehicles').val()
                // 删掉原来的value: $('#value').val()参数
            },
            function(data) {
                document.getElementById('message').innerHTML = data;
                $('#message').slideDown('slow');
                $('#cform img.gif_loader').fadeOut('slow', function() {
                    $(this).remove()
                });
                $('#submit').removeAttr('disabled');
                if (data.match('success') != null) $('#cform').slideUp('slow');
            }
        );
    });
    return false;
});

3. 检查确认点

确保你的外层表单标签的id是working_form,和JS中的提交事件选择器对应,否则提交逻辑不会触发。

内容的提问来源于stack exchange,提问作者Enonimy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:18:02