2009-07-27 11 views
0

Dans ma demande, je vais avoir un code commetableau en utilisant dans le JQuery

$(document).ready(function(){ 
    $("#"+<?=$r['Attribute']['id'];?>).each(function() { 
      type= "<?=$r['Attribute']['type'];?>"; 
      attribute_id= "<?=$r['Attribute']['id'];?>"; 
      if(type=="dropdown") 
      { 
       var ht = $.ajax({ 
        type: "GET", 
        url: "http://localhost/FormBuilder/index.php/forms/viewChoices/"+attribute_id, 
        async: false 
       }).responseText; 


       var myObject = eval('(' + ht + ')'); 
       alert(myObject); 


       // var getchoice=myObject.choices[0]["choice"]; 
       //alert(getchoice); 

                } 
     }); 
    }): 

Dans le code ci-dessus pour chaque AttributeId, je vois si le type de son est un menu déroulant alors je suis retriving ses choix de cette Ajax obtenir de la table de choix dans le choix, Mon myObject affiche comme

{"choices":[{"choice":"Male"},{"choice":"Female"}]}//for a attribute with the label gender 

    {"choices":[{"choice":"BE"},{"choice":"ME"},{"choice":"MBA"}]}//for a attribute with the label qualification 

Mais que getChoice affiche uniquement les hommes, et plus tard être depuis que je suis en utilisant [0]

je veux garder ces premières valeurs alertées qui sont mâles et femelles dans un tableau Et puis dans le même tableau plus tard pour enregistrer seulement be, me, mba .. Parce que je veux garder ces valeurs de tableau à afficher dans la liste déroulante boîte pour les étiquettes respectives ... Comment faire ....... S'il vous plaît me sugggest ...

Répondre

1

Un certain nombre de choses que vous pourriez améliorer:

1. En utilisant chacun avec un id selector.

$("#"+<?=$r['Attribute']['id'];?>).each 

each n'a pas l'aide est logique, puisque ce sélecteur correspondra à un seul élément, et l'identifiant de l'élément doit être unique.

2. $ .ajax pour gérer une réponse JSON

Si vous faites une requête ajax qui retourne JSON, la fonction $.getJSON est la meilleure façon de procéder, vous n'avez pas besoin d'analyser la réponse, elle sera évaluée en toute sécurité par jQuery .

3. Votre demande est synchrone.

Je ne suis pas contre les demandes synchrones, mais je pense que vous n'en avez pas explicitement besoin.

Enfin, pour votre réponse JSON, vous pouvez facilement aplatir le résultat, en utilisant la fonction $.map par exemple:

var data = {"choices":[{"choice":"Male"},{"choice":"Female"}]}; 
$.map(data.choices, function(i){return i.choice;}); 
// returns ["Male", "Female"] 
Questions connexes