我无法将表单的值发布到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和$松青不含值,其他变量就没有这个问题,他们都显示正常。
任何人都可以告诉我是什么原因导致此问题,并有解决方案/解决方法吗? 谢谢!
xmlhttp.open(“GET”,“assets/php/getidopont.php?q =”+ str,true);应该是xmlhttp.open(“POST”,“assets/php/getidopont.php?q =”+ str,true);不是吗? –