2010-04-19 17 views
5

que tienen un problema con respecto al automóvil poblar un selecto menú desplegable de jQuery datos/JSON que es regreso de una ColdFusion CFC, el código es el siguiente:jQuery Autopopulate de selección desplegables de JSON emite

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

El JSON devuelto es:

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

Sin embargo me sale el siguiente error:

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

¿Alguna idea?

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> 

Respuesta

2

Desde el JSON usted está volviendo no es una matriz, sólo tiene esto:

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

El $.each() el código actual exige es un bucle sobre las propiedades de la oject ... para ver esto simplemente ponga alert(this) en el ciclo, por lo que dentro del ciclo está viendo 1, la matriz de columnas y el objeto de datos al final. You can see this in a demo here.

Como solo desea acceder a las propiedades de un solo objeto, use la notación de puntos de arriba para obtenerlas directamente. Si cambia el formato y obtiene una matriz de estos, ajuste lo que tengo arriba en un $.each() y reemplace data con this dentro de ese bucle.

Actualizado para la comentarios: Su SZLICENCETYPE se devuelve como una matriz: "SZLICENCETYPE":["Standard"], por lo que tendrá que obtener el primer elemento de ella usando [0].

+0

No conseguir un error de esos cambios, así que supongo su trabajo, sin embargo, duerma parece estar añadiendo al selecto ... Y estoy recibiendo este error desde el archivo jquery.min.js: G es undefined [Romper en este error] (function() {var l = this, g, y = l.jQuery, p = ... ch (function() {o.dequeue (this, E)})}}) ; –

+0

@Jonathon - ¿Puedes publicar la sección html que contiene tu '