2010-04-19 8 views
5

Ich habe ein Problem in Bezug auf Auto eine ausgewählte Dropdown von jQuery/JSON-Daten bevölkert, die Rückkehr von einer Coldfusion CFC ist, ist der folgende Code:jQuery automatisch ausgefüllt wählen Dropdown aus JSON gibt

$(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');}; 

Die json zurückgekehrt ist:

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

aber ich die folgende Fehlermeldung erhalten:

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

Irgendwelche Ideen?

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> 

Antwort

2

Da die JSON Sie Rückkehr kein Array ist, brauchen Sie nur das:

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

Der $.each() der aktuelle Code-Anrufe über die oject Eigenschaften ist looping ... um dies zu sehen, setzen Sie einfach alert(this) in die Schleife, so in der Schleife sieht es 1, das Spaltenarray und das Datenobjekt am Ende. You can see this in a demo here.

Da Sie nur auf Eigenschaften für ein einzelnes Objekt zugreifen möchten, verwenden Sie die Punktnotation oben, um direkt auf sie zuzugreifen. Wenn Sie das Format ändern und ein Array von diesen erhalten, dann wickeln Sie, was ich oben in einer $.each() habe und ersetzen data durch this innerhalb dieser Schleife.

für Kommentare Aktualisiert: Ihr SZLICENCETYPE als Array zurückgegeben wird: "SZLICENCETYPE":["Standard"], so dass Sie das erste Element holen müssen daraus [0] verwenden.

+0

Nicht einen Fehler für diese Änderungen bekommen, damit ich seine Arbeits denke, es aber leider nicht an die Auswahl zu werden anhängt scheint ... Und ich erhalte diesen Fehler aus der jquery.min.js Datei: G undefined [Break auf diesen Fehler] (Funktion() {var l = das, g, y = l.jQuery, p = ... ch (Funktion() {o.dequeue (das, E)})}}) ; –

+0

@ Jonathon - Können Sie den HTML-Abschnitt mit Ihrem '