这是一个动态下拉列表,这是我在ajax / php上的代码:
function populateSubCategory(str){
if (str == "") {
document.getElementById("category").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
//for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
//for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("subcategory").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","/getSubCategory.php?value="+str,true);
xmlhttp.send(null);
}
}
getSubCategory.php:
while($row = $result->fetch(PDO::FETCH_ASSOC)){
$selected = ($row['id'] == $_POST['subcategory']) ? ' selected' : "";
echo "<option value=".$row['id']. $selected.">".$row['subcategory']) ." </option>";
}
问题是,提交后,它不会在下拉列表中保留所选项目。我已经尝试过这段代码,但它不能正常工作:
while($row = $result->fetch(PDO::FETCH_ASSOC)){
if($_POST['subcategory']==$row['id']) {
echo "<option selected>".$row['subcategory']."</option>";
} else {
echo "<option>".$row['subcategory']."</option>";
}
怎么办?请帮助,我坚持这个..
答案 0 :(得分:1)
您使用ajax调用rt提交。所以你应该将子类别值传递给服务器端。并且您还将方法指定为GET,并使用POST调用($ _POST ['subcategory'])。
答案 1 :(得分:0)
感谢您的评论..我已设法通过使用此jquery方法在下拉列表中显示所选值:
$('#subcategory').on('change', function() {
var selectedSub = $('#subcategory :selected').text();
然后回显隐藏输入字段中的文本,所以在提交时,我可以这样做:
$subcategory = $_POST['hiddeninputfield'];
但是,这会导致另一个问题,在提交或发布后,下拉选择不会保留。我希望用户仍然选择或更改下拉列表中的任何内容......