2017-02-20 2 views
1

Я пытаюсь добавить выбранный элемент html в форму, которая будет отправлена ​​вместе с электронной почтой. Я хотел бы знать, как правильно получить значение из списка выбора и передать его на PHP. Я не смог правильно понять это. Буду признателен за любую помощь. Ниже мой код ...Как добавить список выбора в форме контакта 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 = "[email protected]";  
     $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."; 
     } 
    } 
    ?> 
+0

Не уверен, в чем проблема или что вы пытаетесь сделать. Я не вижу ваш код, ссылающийся на поле выбора где угодно? –

+0

Я хотел бы знать, как правильно добавить поле выбора в файл php и Javascript @MagnusEriksson –

+0

Все еще неясно, что вы подразумеваете под словом «Добавить поле выбора». Пробовал копировать/вставить? Или вы говорите о получении выбранного значения и передаете его вашему PHP-коду? Вам необходимо переписать свой вопрос и уточнить, что вы пытаетесь сделать, какова фактическая проблема и что вы пробовали до сих пор. –

ответ

0

id вашего <select> элемента "s", но ваш браузер не ссылаться на него в любом месте. Предполагая, что ваша функция _() относится к id, вам нужно будет добавить следующую строку с аналогичными строками.

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

Это должно сделать $_POST['s'] доступны для использования на стороне PHP.

Не забудьте сделать что-то, чтобы избежать все поля, отправленные через эту форму, а не только текстовые входы и текстовые поля, чтобы избежать попыток использовать сайт или получателя сообщения.

Смежные вопросы