I have an issue regarding to auto populating a select dropdown from jQuery/JSON data which is return from a ColdFusion CFC, the code is below:
$(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');};
The json returned is:
{"ROWCOUNT":1,"COLUMNS":["UUIDLICENCETYPE","SZLICENCETYPE"],"DATA":{"UUIDLICENCETYPE":["480CE560-BCD3-C7AC-AF50B3C71BBCC473"],"SZLICENCETYPE":["Standard"]}}
However i get the following error:
$("").val(this.UUIDLICENCETYPE).text is not a function
Any ideas?
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>
Since the JSON you're returning isn't an array, you just need this:
function(data){
var select = $('#uuidLicenceType');
$('<option />', {
val: data.DATA.UUIDLICENCETYPE,
text: data.DATA.SZLICENCETYPE[0]
}).appendTo(select);
}
The $.each() the current code calls is looping over the oject's properties...to see this just put alert(this) in the loop, so inside the loop it's seeing 1, the column array, and the data object at the end. You can see this in a demo here.
Since you just want to access properties on a single object, use the dot notation above to get at them directly. If you change the format and get an array of these, then wrap what I have above in a $.each() and replace data with this inside that loop.
Updated for comments: Your SZLICENCETYPE is being returned as an array: "SZLICENCETYPE":["Standard"], so you need to fetch the first element from it using [0].
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With