2015-04-22 7 views
1

c'est un menu déroulant dynamique et voici mon code sur ajax/php:menu déroulant ne pas conserver la valeur sélectionnée sur soumettre

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>"; 
} 
problème

est, après le dépôt, il ne ne pas conserver l'élément sélectionné dans la liste déroulante. Je l'ai déjà essayé ce code, mais il ne fonctionne pas aussi bien:

while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
    if($_POST['subcategory']==$row['id']) { 
     echo "<option selected>".$row['subcategory']."</option>"; 
    } else { 
     echo "<option>".$row['subcategory']."</option>"; 
    } 

Que faire? Pls aider, je suis coincé sur ce ..

+0

Vous soumettons la ajax par get.What que de $ _POST [ « sous-catégorie »]? – Techroshni

+0

Je suis un débutant en php/ajax, avez-vous tous les deux une solution recommandée sur la façon de faire cela? –

+0

Je pense que votre zone de sélection n'est pas remplie avec votre texte de réponse car il y a un problème lorsque les options de sélection sont mises à jour via ajax. (. Document.getElementById (« selectResponse ») innerHTML = xmlhttp.responseText;) - Faites votre structure comme

et envoyer l'ensemble de la réponse selectbox ajax et remplir dans div – Techroshni

Répondre

1

Vous l'appel à l'aide soumettais ajax rt. Vous devriez donc passer la valeur de la sous-catégorie au serveur. Et aussi vous spécifie la méthode comme GET, et appelée en utilisant POST ($ _POST ['sous-catégorie']).

+0

oui, la valeur est de passer du côté du serveur, fait ceci: $ val = intval ($ _ GET ['value']); Normalement j'utilise juste: "> pour garder le texte sur le champ de saisie après que l'utilisateur ait tapé submit, mais ayant du mal à le faire dans la liste déroulante .. –

+0

J'ai essayé de changer POST pour GET comme ceci: $ selected = $ row ['id'] == $ _GET ['val']? 'sélectionné': ""; \t \t echo ""; mais pas de chance jusqu'à présent .. :( –

+0

Qu'est-ce que vous avez été quand Echoed $ _GET [ 'value'] –

0

grâce à vos commentaires .. J'ai réussi à afficher la valeur sélectionnée dans le menu déroulant en utilisant cette méthode jquery:

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

puis écho le texte dans le champ de saisie caché, ainsi de suite soumettre, je peut faire:

$subcategory = $_POST['hiddeninputfield']; 

cependant, cela conduit à un autre problème, soumettre après ou après, la sélection du menu déroulant n'est pas retenue. Je voudrais encore utilisateur de sélectionner ou de modifier tout ce qui est dans la liste déroulante ...