Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提交时不保留选定值的下拉列表_Php_Ajax - Fatal编程技术网

Php 提交时不保留选定值的下拉列表

Php 提交时不保留选定值的下拉列表,php,ajax,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 XMLHttpRequ

这是一个动态下拉列表,下面是我在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)){
$selected=($row['id']=$\u POST['subcategory'])?“selected':”;
回显“$row['subcategory'])”;
}
问题是,提交后,它不会在下拉列表中保留所选项目。我已经尝试过此代码,但效果不太好:

while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
    if($_POST['subcategory']==$row['id']) { 
        echo "<option selected>".$row['subcategory']."</option>"; 
    } else { 
        echo "<option>".$row['subcategory']."</option>"; 
    } 
while($row=$result->fetch(PDO::fetch_ASSOC)){
如果($_POST['subcategory']==$row['id']){
回显“$row['subcategory']”;
}否则{
回显“$row['subcategory']”;
} 

怎么办?请帮助,我被困在这个问题上了。

您使用ajax调用rt提交的。因此您应该将子类别值传递给服务器端。并且您还将方法指定为GET,并使用POST调用($\u POST['subcategory')).

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

$('#subcategory').on('change', function() {
var selectedSub = $('#subcategory :selected').text();
然后回显隐藏输入字段中的文本,然后提交,我可以执行以下操作:

$subcategory = $_POST['hiddeninputfield'];

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

您正在通过get提交ajax。那是什么$_post['subcategory']?我是php/ajax的初学者,你们都有推荐的解决方案吗?我认为选择框中没有填充响应文本,因为通过ajax更新选择选项时会出现问题。将您的结构设置为-并从ajax响应发送整个选择框并填充到div(document.getElementById)(“selectResponse”).innerHTML=xmlhttp.responseText;)是的,值被传递到服务器端,这样做:$val=intval($\u GET['value']);我通常只是使用:我尝试过更改帖子以获得这样的结果:$selected=$row['id']=$\u GET['val']?“selected':”;echo“$row['subcategory'])”;但目前为止没有运气:($row['subcategory']):(回显时得到了什么['value']?此代码:$val=intval($\u GET['value'])返回在第一个下拉列表中选择的选项值的id。我上面发布的代码在第一个下拉列表中有效,即使在提交后,它也会保留所选项目的值,但在第二个和第三个下拉列表中不会。我如何存储所选值并在以后检索它?我仍然不知道如何执行此操作..我想所以尝试了$u会话['subcategory']和$u请求['subcategory']都没有用。。。