2016-04-24 68 views
0

我無法將表單的值發佈到PHP腳本。該表格具有通用字段,如姓名,電子郵件,電話,留言+ 2個下拉列表。我使用AJAX根據第一個表單的選擇爲第二個列表生成值。PHP - AJAX - 未通過POST傳遞表格值

我在發帖之前四處張望,我主要發現了使用JQuery for AJAX的問題,這就是爲什麼我發佈這個問題。

只有當我試圖回顯下拉列表的值時纔會出現此問題。

下面是完整的源代碼:

HTML表單:

<form name="booking" action="assets/php/booking_form.php" onsubmit="return bookingValidate()" method="post"> 
    <div> 
     <label>Some text</label> 
     <select name="szolgaltatas" id="szolgaltatas" onchange="getIdopont(this.value)" data-placeholder="..." style="width:100%;" tabindex="5"> 
      <option value="">...</option> 
      <option value="hajvagas">Option 1</option> 
      <option value="hajfestes">Option 2</option> 
      <option value="alkalmi">Option 3</option> 
      <option value="szoli">Option 4</option> 
     </select> 
    </div> 
    <div> 
     <label>Some text</label> 
     <select name="idopont" id="idopont" data-placeholder="some text" style="width: 100%;" class="" tabindex="5"> 
     </select> 
    </div> 
    <div> 
     <label>Name</label> 
     <input type="text" name="name" placeholder="some text"> 
    </div> 
    <div> 
     <label>Phone</label> 
     <input type="text" name="phone" placeholder="some text"> 
    </div> 
    <div> 
     <label>Email</label> 
     <input type="text" name="email" placeholder="some text"> 
    </div> 
    <div> 
     <label>Message</label> 
     <textarea name="message" placeholder="some text"></textarea> 
    </div> 
</form> 

的JavaScript AJAX:

function getIdopont(str) { 
if (str == "") { 
    document.getElementById("idopont").innerHTML = ""; 
    return; 
} else { 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("idopont").innerHTML = xmlhttp.responseText; 
     } 
    }; 
    xmlhttp.open("GET","assets/php/getidopont.php?q="+str,true); 
    xmlhttp.send(); 
}} 

PHP爲AJAX:

表單處理
<?php 
$q = utf8_encode($_GET['q']); 

$con = mysqli_connect('localhost','user','password','dbname'); 
if (!$con) { 
    die('Could not connect: ' . mysqli_error($con)); 
} 

mysqli_select_db($con,'dbname'); 
$sql="SELECT * FROM foglalas WHERE foglalt = 'N' AND datum > SYSDATE() AND szolgaltatas = '".$q."'"; 
$result = mysqli_query($con, $sql); 

while($row = mysqli_fetch_array($result)) { 
    echo '<option value="' . $row['azon'] . '">' . utf8_encode($row['dolgozo_nev']) . ' - '. $row['datum'] . ' - ' . $row['idopont'] . ' </option>'; 
} 
mysqli_close($con); 
?> 

PHP:

<?php 
    $szolgaltatas = $_POST['szolgaltatas-lista']; 
    $azon = $_POST['idopont-lista']; 
    $name = $_POST['name']; 
    $phone = $_POST['phone']; 
    $message = $_POST['message']; 
    $email_vendeg = $_POST['email']; 

    echo "$szolgaltatas\n$azon\n$name\n$phone\n$email_vendeg\n$message"; 
?> 

到底什麼時候我呼應值,$ szolgaltatas和$松青不含值,其他變量就沒有這個問題,他們都顯示正常。

任何人都可以告訴我是什麼原因導致此問題,並有解決方案/解決方法嗎? 謝謝!

+0

xmlhttp.open(「GET」,「assets/php/getidopont.php?q =」+ str,true);應該是xmlhttp.open(「POST」,「assets/php/getidopont.php?q =」+ str,true);不是嗎? –

回答

1

我沒有看到你的腳本中的任何地方,你重新定義兩個變量添加「-lista」。

他們應該是:

$szolgaltatas = $_POST['szolgaltatas']; 
$azon = $_POST['idopont']; 
+0

謝謝,這確實是問題所在! –

1

在HTML頁面中檢查您的選擇標籤的名字,並把它適當的$_POST["your tag name here "]

只需複製並粘貼您的所有輸入並選擇標記名稱,以避免您再次遇到此類型錯誤。

+1

謝謝,這個問題解決了! –