我在将表单的值发布到PHP脚本时遇到问题。表单包含名称,电子邮件,电话,消息+ 2下拉列表等常规字段。我使用AJAX根据第一种形式的选择为第二个列表生成值。
我在发帖前环顾四周,我大多发现使用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>
适用于AJAX的Javascript:
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 for 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和$ azon不包含任何值,其他变量没有这个问题,它们被正确显示。
任何人都可以告诉我导致此问题的原因并且有解决方案/解决方法吗? 谢谢!
答案 0 :(得分:1)
我在脚本中没有看到任何地方重新定义添加“-lista”的两个变量。
他们应该只是:
$szolgaltatas = $_POST['szolgaltatas'];
$azon = $_POST['idopont'];
答案 1 :(得分:1)
在html页面中检查您的选择标记名称并将其正确放入$_POST["your tag name here "]
。
只需复制并粘贴您的所有输入并选择标记名称,这种习惯永远不会再次出现此类错误。