5

我有一个关于从 ColdFusion CFC 返回的 jQuery/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');};

返回的json是:

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

但是我收到以下错误:

$("").val(this.UUIDLICENCETYPE).text 不是函数

有任何想法吗?

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>
4

1 回答 1

2

由于您返回的 JSON 不是数组,因此您只需要以下内容:

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

当前$.each()的代码调用正在循环对象的属性...看到这个只是放在alert(this)循环中,所以在循环中它看到1的是 、列数组和最后的数据对象。 您可以在此处的演示中看到这一点

由于您只想访问单个对象的属性,因此请使用上面的点符号直接获取它们。如果您更改格式并获得这些数组,则将上面的内容包装在 a 中$.each()并替换为该循环内datathis

更新评论:您SZLICENCETYPE作为数组返回:"SZLICENCETYPE":["Standard"],因此您需要使用从中获取第一个元素[0]

于 2010-04-19T12:38:47.727 回答