2016-04-24 66 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

谢谢,这个问题解决了! –