2017-05-06 52 views
-1

這是我的HTML代碼(Only選擇部分)我需要從用戶檢查多個選擇,並把它用ajax.then我需要一個郵件張貼到管理員到PHP複選框值不傳遞給PHP使用AJAX

<fieldset class="form-group"> 
    <label>Preferred method of contact : </label> 
    <br> 
    <br> 
    <div class="form-check"> 

     <label class="checkbox-inline"> 
      <input type="checkbox" name="color" id="color" value="Whatsapp">Whatsapp 

     </label> 
     <label class="checkbox-inline"> 

      <input type="checkbox" name="color" id="color" value="Viber">Viber 
     </label> 
     <label class="checkbox-inline"> 
      <input type="checkbox" name="color" id="color" value="E-Mail">E-Mail 
     </label> 
    </div> 
</fieldset> 

這是Ajax部分發送值給php。在我聯繫我們形式名稱PHONENO ADDRESS和下拉菜單與Ajax和PHP工作正常,但只有這個複選框部分不工作。

<script> 
function _(id) { 
    return document.getElementById(id); 
} 

function submitForm() { 
    _("mybtn").disabled = true; 
    _("status").innerHTML = 'please wait ...'; 
    var formdata = new FormData(); 

    formdata.append("n", _("n").value); 
    formdata.append("e", _("e").value); 
    formdata.append("m", _("m").value); 
    formdata.append("no", _("no").value); 
    formdata.append("exampleSelect1", _("exampleSelect1").value); 
    formdata.append("exampleSelect2", _("exampleSelect2").value); 
    formdata.append("exampleSelect3", _("exampleSelect3").value); 

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

    var ajax = new XMLHttpRequest(); 
    ajax.open("POST", "example_parser.php"); 
    ajax.onreadystatechange = function() { 
     if (ajax.readyState == 4 && ajax.status == 200) { 
     if (ajax.responseText == "success") { 
      _("my_form").innerHTML = '<h2>Thanks ' + _("n").value + ', your message has been sent.</h2>'; 
     } else { 
      _("status").innerHTML = ajax.responseText; 
      _("mybtn").disabled = false; 
     } 
     } 
    } 
    ajax.send(formdata); 
} 
</script> 

這是我的PHP代碼從php頁面。我需要將所有複選框結果傳遞給此PHP部分並將聲明器傳遞給一個變量,然後我可以將其用於郵件發送。

if(isset($_POST['n']) && isset($_POST['e']) && isset($_POST['m'])){ 
$n = $_POST['n']; // HINT: use preg_replace() to filter the data 
$e = $_POST['e']; 
$no = $_POST['no']; 
$m = nl2br($_POST['m']); 
$pkg = $_POST['exampleSelect1']; 
$cnty = $_POST['exampleSelect2']; 
$how = $_POST['exampleSelect3']; 

$var = $_POST['color']; 
+1

不能使用相同的ID。 Id必須是唯一的。 –

+0

您可以在檢查複選框後嘗試製作一個Ajax。我認爲如果複選框沒有被選中,它的值在ajax請求上就會變成空白。 –

+0

我收到答案。現在它的工作:) Thnku無論如何:) – Shawty

回答

1

首先,您有三個具有相同id =「color」的元素。 然後:

document.getElementById("color") 

總是返回他們的第一個,不管是檢查還是沒有。 這是好主意,聲明另一個功能:

function __(selector) { 
    return document.querySelectorAll(selector); 
} 

然後,你可以寫:

var colors = __('input[name="color"]:checked'); 
var result = []; 

for(var i = 0; i < colors.length; i++) { 
    result.push(colors[i].value); 
} 

formdata.append("color", result); 
+0

WOwww真的工作:) thnku Sooo多:) :) – Shawty