2010-01-18 4 views
1

Initialement, j'ai utilisé un fichier .js contenant des fonctions AJAX pour appeler un fichier .php. Le fichier .php contient du code pour remplir dynamiquement un DropDown en fonction de certains paramètres passés via QueryString.Le code PHP appelé via JQuery a cessé de fonctionner

Tout fonctionne correctement avec la méthode ci-dessus. Mais maintenant je veux remplir le DropDowns au chargement de la page et je veux donc utiliser JQuery à la place de mon ancienne méthode. J'ai essayé le code suivant, mais il ne remplit pas le DropDown.

$.get("../Lib/filldropdown.php", 
         { param1: "divMemberOf", param2: "inMemberOf", param3: "categorymaster" }); 

Ci-dessous le code du fichier .php:

<?php 
    require("dbconnection.php"); 
    require("dbaccess.php"); 

    $dropdownControlName = $_GET['DropDownControlName']; 
    $query = "....."; 
    dbconnection::OpenConnection(); 
    $result = dbaccess::GetRows($query); 
?> 
<select id="<?php echo $dropdownControlName; ?>" name="<?php echo $dropdownControlName; ?>"> 
<option>Select from the list</option> 
<?php while($row=mysql_fetch_array($result)) 
{ ?> 
    <option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option> 

<?php } ?> 
</select> 

S'il vous plaît noter que le code ci-dessus JQuery passe trois paramètres, mais je n'ai utilisé qu'une seule dans le code PHP ci-dessus. Je vais utiliser deux paramètres plus tard. Le code PHP ci-dessus fonctionne parfaitement avec ma vieille méthode AJAX.

Répondre

1

Vous effectuez une requête AJAX à l'aide de GET, mais vous n'ajoutez pas de fonction de rappel pour gérer le code HTML renvoyé. Il disparaît dans l'air mince. Pour un exemple complet, consultez the JQuery AJAX documentation on GET.

Votre appel devrait ressembler à ceci:

$.get("../Lib/filldropdown.php", 
{ param1: "divMemberOf", param2: "inMemberOf", param3: "categorymaster" }, 
function(data) { $('#myDivID').html(data); } 

);

+0

Je l'ai utilisé, mais pas suivi comment gérer la fonction (données). Auparavant, je ne faisais pas appel à des rappels. Comment utiliser cette "donnée" pour remplir le DropDown. – RKh

+0

Remplacez juste la partie '#myDivID 'par l'ID de votre conteneur, cela devrait être tout. –

+0

Je l'ai fait, mais il ne remplit pas la liste. Cependant, il prend le texte par défaut que j'ai donné pour le DropDown dans le code PHP. – RKh

1

Vous avez besoin soit d'ajouter une fonction de rappel ou la méthode .load pourrait être plus approprié puisque vous voulez juste injecter les résultats de cet appel PHP dans la page:

$("#someContainer").load("../Lib/filldropdown.php", 
         { param1: "divMemberOf", 
          param2: "inMemberOf", 
          param3: "categorymaster" }); 

Vous avez juste besoin de DIV ou quelque chose à être un espace réservé pour injecter la boîte de sélection dans.

+0

J'ai une Div. – RKh

+0

@RPK: en l'état, en utilisant '$ .get', vous n'attribuez pas la boîte de sélection pour aller n'importe où. Vous devez utiliser la technique décrite par Parrots pour la mettre physiquement * quelque part. Vous chargez effectivement le code, mais vous ne faites rien avec. – mattbasta

+0

J'ai modifié en conséquence, mais il ne remplit toujours pas. Il ne fait que modifier le DropDown avec le texte "Sélectionner dans la liste". Ce texte, comme vous pouvez le voir dans le code postal d'origine, se trouve dans le fichier .php. Mais il ne récupère pas la liste. – RKh

1

Vous ne spécifiez pas la clé correctement pour que votre php fonctionne tel quel. Dans votre javascript vous créez une requête comme ceci: param1 = divMemberOf & param2 = inMemberOf & param3 = categorymaster

Je pense vous avez besoin l'un de ces paramètres à être nommé DropDownControlName puisque vous utilisez comme l'ID pour votre nouvelle entrée sélectionnée. Vous pouvez également vérifier param2 et param3 puisque vous utilisez probablement ceux de votre requête.

+0

Merci, mais maintenant cela a fonctionné. En fait, j'ai oublié de remplacer "params" avec mon nom de paramètre. – RKh

Questions connexes