Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2013, 13:34
elpropiopato23
 
Fecha de Ingreso: octubre-2011
Ubicación: Niquitao
Mensajes: 28
Antigüedad: 12 años, 6 meses
Puntos: 0
Variable no es reconocida en Jason

Hola Amigos de Foros del Web, un gran saludos a todos y de antemano les agradezco cualquier ayuda que me puedan dar.
Este es el mismo tema No reconoce una variable en respuesta JSON, lo repeti porque no encontre la opción Editar pues ya pasarón casi 10 dias de que lo publique.
Muchas gracias a maycolalvarez Colaborador que me especifico que usara la herramienta Highligth,pues no me había fijado que foros del web tiene esta gran herramienta.

Estoy trabajando con PHP MVC en Zend Framework y necesito cargar combobox dependientes de otros, observe este enlace
http://cefaleapersistente.wordpress.com/2012/09/18/select-dependientes-con-zend-framework-y-jquery/

y soluciono mi problema en parte, pues el código que carga el combo 2 con el combo1 es el siguiente en esa página:

Código Javascript:
Ver original
  1. $(function(){
  2.         $('#item_select_1').change(function(){
  3.             var ajax = $.ajax({
  4.                 type: "GET",
  5.                 url: "/ad/getmodelos/id/" + $(this).val(),
  6.                 async: true,
  7.                 dataType: "json",
  8.                 beforeSend: function(x) {
  9.                     if(x && x.overrideMimeType) {
  10.                         x.overrideMimeType("application/j-son;charset=UTF-8");
  11.                     }
  12.                 },
  13.                 success: function(data){
  14.                     var options = '';
  15.                     for (var i = 0; i < data.length; i++) {
  16.                         options += '<option value="' + data[i].id_modelo + '">' + data[i].nombre_modelo + '</option>';
  17.                     }
  18.                     $('#item_select_2').html(options);
  19.                 }
  20.             });
  21.         });
  22.     })();

pero esta función que se plantea en esa página tendría que repetirse en varias ocaciones si ya uno quisiera llenar mas de 2 combobox.
En mi caso necesito llenar al rededor de 7 combobox, por la tanto hice esta misma función pero generica, para reutilizarla las veces que la necesite, pero ya la invocaria con el nombre de los combobox implicados y los campos del combo que se llenara con la respuesta JSON.

Al hacerlo la función generica me quedo de la Siguinete Forma:
Código Javascript:
Ver original
  1. LoadSelect = function (data) {
  2.     id = data.atributs['id'];
  3.     name = data.atributs['name'];
  4.         $.ajax({
  5.             url: data.url,
  6.             type: data.type,
  7.             data: data.data,
  8.             async: true,
  9.             dataType: data.data['format'],
  10.             beforeSend: function(x) {
  11.                 if(x && x.overrideMimeType) {
  12.                     x.overrideMimeType("application/j-son;charset=UTF-8");
  13.                 }
  14.             },
  15.             success: function(data){
  16.                     var options = '';
  17.                     for (var i = 0; i < data.length; i++) {
  18.                         options += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
  19.                     }
  20.                     $('#'+id).html(options);
  21.             }
  22.         });
  23. }

invocaría la función de la Siguiente Forma:

Código Javascript:
Ver original
  1. $('#idcollection').bind('change',function () {
  2.     $("#idubication option:first").text("Loading ...");
  3.     LoadSelect({
  4.         url : '/'+$lang+'/library/material/pruebaubication/',
  5.         type : 'GET',
  6.         data : {'format':'json','ubicationid':$(this).val()},
  7.         atributs : {'id':"idubication",'name':"name"},
  8.         element : $('#idcollection option:selected').val()
  9.     });
  10. });

Si observamos en el ciclo de la respuesta JSON

la linea esta así y no me funciona pues no reonoce la variable id
Código Javascript:
Ver original
  1. options += '<option value="' + data[i].id + '">' + data[i].name + '</option>';

si le doy un alert a la variable option me muestra este resultado
<option value=undefined>Primaria</option><option value=undefined>Psicología</option>

Me muestra este resultado por que el campo name es una clave de los valores que me devuelve la respuesta JSON y así se llama la variable pero si la variable name, la cambio por otro nombre tambien me pondra undefined, pero como la variable id no es igual al valor que me devuelve la respuesta JSON, me pone undefined

Si yo hago esto inmediatamente me da los resultados esperados.
Código Javascript:
Ver original
  1. options += '<option value="' + data[i].idubication + '">' + data[i].name + '</option>';
  2.  
  3. /*Me imprime
  4. <option value="2">Primaria</option><option value="3">Psicología</option>*/

intente con la funcion eval() y no me funciono.

muchas gracias por la ayuda que me puedan dar mil gracias

Última edición por elpropiopato23; 07/03/2013 a las 13:47 Razón: Mala Edición