2010-04-19 20 views
5

Bir ColdFusion CFC dönüş olduğunu jQuery/JSON verilerinden seçkin açılan doldurma auto ilgili bir sorunu var sorunları, kod aşağıda:jQuery otomatik olarak doldurmak seçme damla

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

döndürdü json geçerli:

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

i aşağıdaki hatayı alıyorum Ancak:

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

Herhangi bir fikir?

HTML:

Eğer dönen JSON bir dizi olmadığı için
<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> 

cevap

2

, sadece bu gerekir:

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

geçerli kod Oject özelliklerinde üzerinde döngü olduğunu çağıran $.each() ... sadece bu döngüye alert(this)'u koyduğunu görmek için, döngü içinde 1, sütun dizisi ve sonunda veri nesnesi görüyor. You can see this in a demo here.

Sadece tek bir nesnede özelliklere erişmek istediğinizden, doğrudan bunlara ulaşmak için yukarıdaki nokta işaretini kullanın. Biçimi değiştirirseniz ve bunlardan bir dizi alırsanız, o zaman benim yukarıda bir $.each() içinde sarın ve bu döngü içinde data ile this değiştirin.

yorumlarla için Güncelleme: Eğer [0] kullanarak ilk öğesini getirmesi gerekir, böylece "SZLICENCETYPE":["Standard"]: Sizin SZLICENCETYPE bir dizi olarak iade ediliyor. Sanırım onun çalışma sanırım bu yüzden ancak doesnt seçme eklemeden gibi görünüyor, bu değişikliklerin bir hata alıyorum Değil

+0

... Ve jquery.min.js dosyadan bu hatayı alıyorum: G undefined [Bu hatayı kırın] (işlev() {var l = bu, g, y = l.jQuery, p = ... ch (işlev() {o.dequeue (bu, E)})}}) ; –

+0

@Jonathon -