2011-05-04 2 views
1

Je dois réinitialiser les valeurs sur une page en utilisant un appel ajax. J'utilise Jquery pour effectuer cela.Valeurs de réglage dans s: select using jquery ajax

Les valeurs doivent être réinitialisées dans une liste à sélection multiple. Si je change la valeur dans la boîte de sélection et que je clique sur Réinitialiser alors les dernières valeurs sauvegardées de DB doivent être définies dans la liste.

Je cherche le dessous

  function resetNameDetails() { 

          $.ajax({ 
              type: "POST", 
              url: 'resetNameDetailsAction.action?, 
              error: function(data) { 
                  alert("error"); 
              }, 
              success: function(data) { 

                  alert("sucess"); 
                  alert(data.userModel.nameList); 

              } 
          }); 

      } 

La deuxième alerte dans le succès donne une liste des objets seulement. Comment je transfère ces données au contrôle de sélection.


Mise à jour

var nameListData = data.userModel.nameList; 
var select = document.getElementById('nameList'); 
alert(select); 
select.options.length = 0; // clear out existing items 
for(var i=0; i < nameListData.length; i++) { 
    var d = nameListData[i]; 
    alert(d); 
    select.options.add(new Option(d, i)) 
} 

me montre la liste peuplée avec [objet Object]

+0

Votre 'data.userModel.nameList' est-elle un tableau? ou un objet? quelle est sa structure? –

+0

Pouvez-vous donner un exemple des données renvoyées? – netbrain

+0

Le essayé ci-dessous \t \t var nameListData = data.userModel.nameList; \t \t \t \t \t \t var select = document.getElementById ('nameList'); \t \t alerte (sélectionnez); \t \t select.options.length = 0; // effacer les éléments existants \t \t pour (var i = 0; i

Répondre

0

En supposant data.userModel.nameList est un tableau de valeurs, vous pouvez le faire:

... 
success: function(data) { 
    var values = data.userModel.nameList; 
    $(":checkbox").each(function(){ 
     var value = $(this).attr("value"); 
     if($.inArray(value, values)) 
      $(this).attr("checked", true); 
     else 
      $(this).attr("checked", false); 
    });  
} 
... 

EDIT: C'était pour les cases à cocher lis t. Pour un multi-sélection, faites ceci:

... 
    success: function(data) { 
     var values = data.userModel.nameList; 
     $("#your_select option").each(function(){ 
      var value = $(this).attr("value"); 
      if($.inArray(value, values)) 
       $(this).attr("selected", true); 
      else 
       $(this).attr("selected", false); 
     });  
    } 
... 

Espérons que cela aide. A bientôt