Foros del Web » Programando para Internet » Jquery »

Llamar funcion Ventana Padre desde Hija (iframe)

Estas en el tema de Llamar funcion Ventana Padre desde Hija (iframe) en el foro de Jquery en Foros del Web. Hola, que tal? Tengo un proyecto en el que involucran PHP , JQuery , Underscore (para generar plantillas) y OrangeBox . Estoy tratando de actualizar ...
  #1 (permalink)  
Antiguo 09/03/2014, 15:38
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Pregunta Llamar funcion Ventana Padre desde Hija (iframe)

Hola, que tal? Tengo un proyecto en el que involucran PHP, JQuery, Underscore (para generar plantillas) y OrangeBox. Estoy tratando de actualizar un DIV que muestra inicialmente el listado de usuarios, cuando carga la página lo hace a través de esta función...

Código Javascript:
Ver original
  1. //VENTANA PADRE...
  2. function CargaTabla() {
  3.     var params = { "comando" : "ver-listado" }
  4.     $.ajax({
  5.         data: params,
  6.         dataType: 'json',
  7.         url: "http://miweb.dev/op-usuarios/cmd/usuarios",
  8.         type: "post",
  9.         beforeSend: function() {
  10.             $("#CargandoID").css("display", "inline");
  11.         },
  12.         success: function(respuesta) {
  13.             var datos = {"datos" : respuesta };
  14.             var compilado = _.template($("#MostrarListaID").html());
  15.             $("#CargandoID").css("display", "none");
  16.             $("#ListadoUsuariosID").html(compilado(datos));
  17.             $("#TablaUsuariosID").tablesorter({ sortList: [[1,0]], headers: { 0: {sorter: false}}, widgets: ['zebra'] });
  18.         }
  19.     });
  20. }
  21. $("#TablaUsuariosID").load(CargaTabla());

Código HTML:
<!-- VENTANA PADRE... -->
<table id="TablaUsuariosID" class="tablesorter">
	<thead>
		<tr>
			<th style="width: 10%;">&nbsp;</th>
			<th style="width: 36%;">Nombre Completo</th>
			<th style="width: 14%;">ID Usuario</th>
			<th style="width: 18%;">Perfil Asignado</th>
			<th style="width: 14%;">Actualización</th>
			<th style="width: 8%;">Estado</th>
		</tr>
	</thead>
	<tbody id="ListadoUsuariosID">
	</tbody>
</table>
<script type="text/template" id="MostrarListaID">
	<% for (var i = 0; i < datos.length; i++) { %>
	<tr>
		<td><% print(datos[i].ID); %></td>
		<td><% print(datos[i].ApeNombre); %></td>
		<td><% print(datos[i].Usuario); %></td>
		<td><% print(datos[i].Perfil); %></td>
		<td><% print(datos[i].Actualizado); %></td>
		<td><% print(datos[i].Estado); %></td>
	</tr>
	<% } %>
</script> 
Tengo un formulario que se abre en una ventana hija IFRAME (OrangeBox) para agregar usuario, el cual me funciona a la perfección, con todos sus filtros. Quisiera llamar a la función CargaTabla(), que está declarada en la ventana padre, una vez que le haga click en "Guardar Cambios", desde la ventana hija.

Código HTML:
<!-- VENTANA PADRE... -->
<p class="P02B"><a href="http://miweb.dev/op-usuarios/usuario-nuevo?iframe" id="usuario-nuevo-link" class="ui-state-default ui-corner-all" data-rel="lightbox[usr-new]"><span class="ui-icon ui-icon-plusthick"></span>Nuevo Usuario</a></p> 
Código Javascript:
Ver original
  1. //VENTANA HIJA...
  2. $("#guardar-cambios-link").click(function(e) {
  3.     e.preventDefault();
  4.         parent.location.reload(); //FUNCIONAL, PERO ME RECARGA TODA LA PAGINA...
  5.     }
  6. });

Probé con parent.location.reload(), pero me recarga toda la página. Lo que deseo, es recargar sólo el DIV donde se anida la tabla (actualizar esta sección solamente, sin recargar todo), es decir invocar desde la ventana hija esta función, ubicada en la ventana padre.

Código Javascript:
Ver original
  1. //QUE SE PUEDA INVOCAR DESDE LA VENTANA HIJA...
  2. $("#TablaUsuariosID").load(CargaTabla());

Alguien que me pueda orientar en esto, me paseé por Google toda la tarde buscando algunos casos, sin respuesta hasta ahora; también estuve leyendo y probando códigos sugerentes del mismo portal jQuery (como Bind), pero sin resultado alguno. Toda respuesta será bienvenida.

Saludos,
__________________
"Viajando en el espacio profundo, de nova en nova, y sorteando a veces uno que otro agujero negro..." Peru@D

Última edición por rfadgrmm; 09/03/2014 a las 15:41 Razón: Especificar más detalles...
  #2 (permalink)  
Antiguo 11/03/2014, 12:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Llamar funcion Ventana Padre desde Hija (iframe)

intenta con window.parent.cargaTabla();

si llamas a reload es lógico que se recargue la página
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 11/03/2014, 15:01
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Pregunta Respuesta: Llamar funcion Ventana Padre desde Hija (iframe)

Gracias por tu respuesta maycolalvarez, lo puse de ese modo y no me funcionó, el Firebug en Mozilla me arrojaba error "function CargaTabla is not defined"; finalmente lo puse de esta forma, no se si sea correcta la sintaxis en jQuery, o si estaré redundando eventos, pero me funcionó por ahora...

Código Javascript:
Ver original
  1. //VENTANA PADRE...
  2. $.fn.CargaTabla = function() {
  3.     var params = { "comando" : "ver-listado" }
  4.     $.ajax({
  5.         data: params,
  6.         dataType: 'json',
  7.         url: "http://miweb.dev/op-usuarios/cmd/usuarios",
  8.         type: "post",
  9.         beforeSend: function() {
  10.             $("#CargandoID").css("display", "inline");
  11.         },
  12.         success: function(respuesta) {
  13.             var datos = {"datos" : respuesta };
  14.             var compilado = _.template($("#MostrarListaID").html());
  15.             $("#CargandoID").css("display", "none");
  16.             $("#ListadoUsuariosID").html(compilado(datos));
  17.             $("#TablaUsuariosID").tablesorter({ sortList: [[1,0]], headers: { 0: {sorter: false}}, widgets: ['zebra'] });
  18.         }
  19.     });
  20. }
  21. function UsuariosTabla() {
  22.     $.fn.CargaTabla();
  23. }
  24. $("#TablaUsuariosID").load(UsuariosTabla());

Código Javascript:
Ver original
  1. //VENTANA HIJA...
  2. parent.$("#TablaUsuariosID").load(parent.$.fn.CargaTabla());

Ahora, lo que me preocupa es que al llamar nuevamente esta función, me agrega más registros a los ya existentes. Si antes tenía 20, ahora son 41 registros (con el nuevo), vuelvo a registrar usuarios y ahora son 63 repetidos; todo eso pasa sólo en la vista HTML, en mi base de datos se inserta sólo un registro. No se si tenga algo que ver con Underscore, pero ¿Habrá alguna forma para que se recargue el DIV sin repetir todos los registros al actualizar el div?

Saludos,
__________________
"Viajando en el espacio profundo, de nova en nova, y sorteando a veces uno que otro agujero negro..." Peru@D
  #4 (permalink)  
Antiguo 12/03/2014, 16:44
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Llamar funcion Ventana Padre desde Hija (iframe)

Podrias usar insertadjacenthtml para el div

https://developer.mozilla.org/en-US/...rtAdjacentHTML

Etiquetas: funcion, hija, padre, ventana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.