5

ColdFusionCFCから返される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 に答える