2015-04-22 88 views
1

這是一個動態的下拉列表,並在此處選擇的值是我對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

您正在通過get提交ajax。那是什麼$ _POST ['subcategory']? – Techroshni

+0

我是一個初學者在PHP/AJAX,你們都有一個建議的解決方案,如何做到這一點? –

+0

我認爲你的選擇框沒有填充你的響應文本,因爲當通過ajax更新選擇選項時會出現問題。使你的結構像 -

併發送整個選擇框從ajax響應並填充到div(document.getElementById(「selectResponse」)。innerHTML = xmlhttp.responseText;) – Techroshni

回答

1

您提交使用ajax調用rt。所以你應該將子類別值傳遞給服務器端。並且您將方法指定爲GET,並使用POST($ _POST ['subcategory'])調用。

+0

是的,值傳遞給服務器端,做到這一點:$ val = intval($ _ GET ['value']);我通常只使用:」>在用戶點擊提交後保持輸入字段上的文本,但在下拉菜單上難以做到這一點.. –

+0

我試着改變POST來獲取像這樣:$ selected = $ row ['id'] == $ _GET ['val']? 'selected':「」; \t \t echo「」;但是到目前爲止沒有運氣.. :( –

+0

當你回顯$ _GET ['value']時得到了什麼? –

0

感謝您的意見。我已經成功利用這個jQuery方法顯示在下拉列表中選擇的值:

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

然後回顯在隱藏的輸入字段中的文本,所以在提交,我可以這樣做:

$subcategory = $_POST['hiddeninputfield']; 

但是,這會導致另一個問題,在提交或發佈後,下拉選擇不會保留。我希望用戶仍然可以選擇或更改下拉列表中的任何內容...