如何在php联系表单中附加选择列表

时间:2017-02-20 18:40:57

标签: javascript php html5

我正在尝试将选定的html项目附加到要与电子邮件一起发送的表单上。我想知道如何从选择列表中正确获取值并将其传递给PHP。我无法正确理解它。我将不胜感激任何帮助。以下是我的代码......

    function _(id){ return document.getElementById(id); }
function submitForm(){
    _("contact-submit").disabled = true;
    _("status").innerHTML = 'please wait ...';
    var formdata = new FormData();
    formdata.append( "n", _("n").value );
    formdata.append( "e", _("e").value );
    formdata.append( "t", _("t").value );
    formdata.append( "w", _("w").value );
    formdata.append( "m", _("m").value );

    var ajax = new XMLHttpRequest();
    ajax.open( "POST", "contact.php" );
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200) {
            if(ajax.responseText == "success"){
                _("contact-form").innerHTML = '<h2 class="tnx">Thanks '+_("n").value+', we will be in touch soon!</h2>';
            } else {
                _("status").innerHTML = ajax.responseText;
                _("contact-submit").disabled = false;
            }
        }
    }
    ajax.send( formdata );
}

HTML

    <div class="cat-select">
                    <label class="cat-selects" for="subject"><span>Area of Interest</span>
                            <select name="subject" class="select-field" id="s">
                            <option value="General Inquiry">General Inquiry</option>
                            <option value="Elderly Care">Elderly Care</option>
                            <option value="Child Care">Child Care</option>
                            </select>
                        </label>
                </div>

PHP

     <?php
    if( isset($_POST['n']) && isset($_POST['e']) && isset($_POST['t']) && isset($_POST['w']) && isset($_POST['m']) ){
        $n = $_POST['n']; // HINT: use preg_replace() to filter the data
        $e = $_POST['e'];
        $t = $_POST['t'];
        $w = $_POST['w'];

        $m = nl2br($_POST['m']);
        $to = "hello@gmail.com";    
        $from = $e;
        $subject = 'Contact Form Message';
        $message = '<b>Name:</b> '.$n.' <br><b>Email:</b> '.$e.' <p>'.$s.' '.$m.'</p>';
        $headers = "From: $from\n";
        $headers .= "MIME-Version: 1.0\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1\n";
        if( mail($to, $subject, $message, $headers) ){
            echo "success";
        } else {
            echo "The server failed to send the message. Please try again later.";
        }
    }
    ?>

1 个答案:

答案 0 :(得分:0)

id元素的<select>是&#34; s&#34;但是你的Javascript并没有在任何地方引用它。假设您的_()函数引用id,则需要添加以下相似行的行。

formdata.append( "s", _("s").value );

这应该使$_POST['s']可以在PHP端使用。

请记住做一些事情以逃避所有通过此表单发送的字段,而不仅仅是文本输入和textareas,以避免任何尝试利用该网站或电子邮件的收件人。