下拉列表未在提交时保留选定的值

时间:2015-04-22 06:05:56

标签: php ajax

这是一个动态下拉列表,这是我在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>"; 
    } 

怎么办?请帮助,我坚持这个..

2 个答案:

答案 0 :(得分:1)

您使用ajax调用rt提交。所以你应该将子类别值传递给服务器端。并且您还将方法指定为GET,并使用POST调用($ _POST ['subcategory'])。

答案 1 :(得分:0)

感谢您的评论..我已设法通过使用此jquery方法在下拉列表中显示所选值:

$('#subcategory').on('change', function() {
var selectedSub = $('#subcategory :selected').text();

然后回显隐藏输入字段中的文本,所以在提交时,我可以这样做:

$subcategory = $_POST['hiddeninputfield'];

但是,这会导致另一个问题,在提交或发布后,下拉选择不会保留。我希望用户仍然选择或更改下拉列表中的任何内容......