2010-04-19 76 views
5

我有一個關於自動填充從jQuery的/ JSON數據的選擇下拉是從一個ColdFusion CFC回報的問題,代碼如下:jQuery的自動填充選擇下拉發出

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

傳回的JSON:

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

但是我得到以下錯誤:

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

任何想法?

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> 

回答

2

既然你返回JSON是不是數組,你只需要這樣:

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

$.each()當前代碼調用的循環在oject屬性...看到這只是把alert(this)放在循環中,所以在循環內部看到1,列數組和最後的數據對象。 You can see this in a demo here

由於您只想訪問單個對象上的屬性,請使用上面的點符號直接獲取它們。如果你改變格式並得到這些數組,然後在$.each()中包裝上面的內容,並在該循環內用this代替data

更新了意見:您SZLICENCETYPE被作爲數組返回:"SZLICENCETYPE":["Standard"],所以你需要的第一個元素從它使用[0]取。

+0

沒有得到這些變化的錯誤,所以我想它的工作,但它不似乎被附加到選擇... 而且我越來越從jquery.min.js文件此錯誤: G是undefined [break on this error](function(){var l = this,g,y = l.jQuery,p = ... ch(function(){o.dequeue(this,E)})}}) ; – 2010-04-19 13:07:20

+0

@Jonathon - 你能發佈包含你的'