2010-04-19 7 views
5

J'ai une question concernant à l'auto peuplant un menu déroulant de sélection à partir de données jQuery/JSON qui est le retour d'un CFC ColdFusion, le code est ci-dessous:jQuery Remplir automatiquement déroulante, sélectionnez des questions JSON

$(function(){ 
$("#licences-add").dialog({autoOpen:false,modal:true,title:'Add Licences',height:250,width:380}); 

});

function openAddLicence(intInstanceID,szName,szDatasourceName){ 
$.getJSON('/ASPAdmin/billing/handler.cfc?method=ListLicenceTypes&queryformat=column',{szInstanceDatasource:szDatasourceName}, 
    function(data){ 
     $.each(data,function(){ 
      $('<option></option>').val(data.DATA.UUIDLICENCETYPE).text(data.DATA.SZLICENCETYPE).appendTo('#uuidLicenceType'); 
     }); 
    }); 
$("#intInstanceID").attr('value', intInstanceID); 
$('span#szInstanceName').text(szName); 
$("#licences-add").dialog('open');}; 

Le JSON est retourné:

{"ROWCOUNT":1,"COLUMNS":["UUIDLICENCETYPE","SZLICENCETYPE"],"DATA":{"UUIDLICENCETYPE":["480CE560-BCD3-C7AC-AF50B3C71BBCC473"],"SZLICENCETYPE":["Standard"]}} 

Cependant je reçois l'erreur suivante:

$("").val(this.UUIDLICENCETYPE).text is not a function

Toutes les idées?

HTML:

<tr> 
<td><label for="uuidLicenceType" title="Select the licence type (required).">Licence Type</label> <span class="req">*</span></td> 
<td> 
    <select name="uuidLicenceType" id="uuidLicenceType" class="bmSelect"> 
     <option value=""></option> 
    </select> 
</td> 
</tr> 

Répondre

2

Depuis le JSON vous retournez est pas un tableau, il vous suffit ceci:

function(data){ 
    var select = $('#uuidLicenceType'); 
    $('<option />', { 
    val: data.DATA.UUIDLICENCETYPE, 
    text: data.DATA.SZLICENCETYPE[0] 
    }).appendTo(select); 
} 

Le $.each() l'appelle code actuel est en boucle sur les propriétés de l'ojet ... pour voir cela, il suffit de mettre alert(this) dans la boucle, donc à l'intérieur de la boucle, il voit 1, le tableau de colonnes, et l'objet de données à la fin. You can see this in a demo here.

Puisque vous voulez simplement accéder aux propriétés d'un seul objet, utilisez la notation pointée ci-dessus pour les voir directement. Si vous modifiez le format et obtenez un tableau de ceux-ci, alors envelopper ce que j'ai ci-dessus dans un $.each() et remplacer data avec this à l'intérieur de cette boucle.

Mise à jour des commentaires: Votre SZLICENCETYPE est retourné comme un tableau: "SZLICENCETYPE":["Standard"], de sorte que vous devez chercher le premier élément de l'aide [0].

+0

Ne pas obtenir une erreur pour ces changements, donc je suppose que son travail, mais il ne marche pas semble être annexant à la sélection ... Et je reçois cette erreur à partir du fichier jquery.min.js: G est undefined [Pause sur cette erreur] (fonction() {var l = ceci, g, y = l.jQuery, p = ... ch (fonction() {o.dequeue (this, E)}}}}) ; –

+0

@Jonathon - Pouvez-vous poster la section html contenant votre '