2009-07-27 5 views
0

In meiner Anwendung, ich bin mit einem Code, wieMit Array in den 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); 

                } 
     }); 
    }): 

In dem obigen Code für jeden attributeId, ich bin zu sehen, ob die Art der ein Dropdown dann bin retriving i seine Entscheidungen bei der Wahl von diesem Ajax aus der Tabelle Auswahl bekommen, Meine myObject Displays wie

{"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 

Aber dass getChoice zeigt nur männlich, und später sein, da ich verwende [0]

Ich möchte diese ersten alarmierten Werte, die männlich und weiblich in einem Array ist Und dann im selben Array später nur zu speichern sein, ich, mba .. Weil ich diese Array-Werte im Dropdown angezeigt werden wollen Box für die jeweiligen Etiketten ... Wie dies zu tun ....... mir bitte sugggest ...

Antwort

1

Ein paar Dinge, die man verbessern könnte:

1. Verwenden Sie jeweils mit einem id selector.

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

Mit each keinen Sinn macht, da dieser Selektor ein einzelnes Element übereinstimmen, und die Element-ID muss eindeutig sein.

2. $ .ajax zum Behandeln einer JSON-Antwort

Wenn Sie eine Ajax-Anfrage ausführen, die JSON zurückgibt, ist die $.getJSON-Funktion der beste Weg. Sie müssen die Antwort nicht analysieren, sie wird von jQuery sicher ausgewertet .

3. Ihre Anfrage ist synchron.

Ich bin nicht gegen synchrone Anfragen, aber ich denke, dass Sie es nicht explizit benötigen.

schließlich für Ihre JSON-Antwort, könnte man leicht das Ergebnis glätten, die $.map Funktion zum Beispiel mit:

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