Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Enviar parámetro de un contenedor a otro.

Estas en el tema de Enviar parámetro de un contenedor a otro. en el foro de Frameworks JS en Foros del Web. Hola, Es posible pasar o enviar un parametro obtenido en un div mediante ajax a otro div. Ej : En un contenedor mediante ajax inserto ...
  #1 (permalink)  
Antiguo 12/10/2006, 07:50
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Enviar parámetro de un contenedor a otro.

Hola,

Es posible pasar o enviar un parametro obtenido en un div mediante ajax a otro div.

Ej :

En un contenedor mediante ajax inserto en la base de datos un registro en una tabla de encabezado, y obtendo el $insert_id, luego en el mismo ajax muestro el registro insertado, es decir inserto y muestro lo insertado lo cual es sencillo, luego necesito enviar el $insert_id hacia otro div o contenedor que mediante otra petición (request) ajax inserta las lineas o detalle del registro anterior utilizando el $insert_id para la integridad referencial.

Se entiende más menos?

Muchas gracias y saludos.
  #2 (permalink)  
Antiguo 12/10/2006, 17:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
entonces no es posible pasar variables de un div a otro div?
alguien sabe algo?
  #3 (permalink)  
Antiguo 13/10/2006, 05:32
Avatar de ikhuerta  
Fecha de Ingreso: octubre-2006
Mensajes: 104
Antigüedad: 17 años, 6 meses
Puntos: 0
a ver...

Un div contiene lo que contenga... normalmente texto o HTML. No contiene variables a no ser que tu quieras usar su contenido como tal.

Pasar el contenido de un div a otro es tan facil como

Código:
document.getElementById("id_div_destino").innerHTML=document.getElementById("id_div_origen").innerHTML;
Ahora, no creo que eso sea lo que tu quieres... porque estas mezclando variables de php con javascript.

Tienes que tener claro que php cuando tu ves la pagina ya se ha ejecutado en el servidor con lo que javascript que trabaja en el navegador del usuario no puede tocar esos datos. No se que contiene tu $insert_id ni para que quieres pasarlo a un div distinto... quizas saberlo ayudaría.

Iñaki.
  #4 (permalink)  
Antiguo 13/10/2006, 08:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
$insert_id es numero ID de la tabla padre y la necesito en el otro contenedor para insertar los registros de la tabla hija con su foreign key ($insert_id) de la tabla padre
  #5 (permalink)  
Antiguo 14/10/2006, 07:48
Avatar de ikhuerta  
Fecha de Ingreso: octubre-2006
Mensajes: 104
Antigüedad: 17 años, 6 meses
Puntos: 0
A ver si te he entendido...


To lo que quieres es seguir un proceso como este:


1) Abrir Base de datos y sacar datos.
2) Mandar parte de los datos y el id de conexión a base de datos por ajax.
3) Luego hacer otra petición por ajax que aprobeche que ya tienes el id de conexión a base de datos y con php procesarlo.
4) Cerrar la conexión.


Primero decirte que no se si puedes hacer eso de utilizar el mismo id de conexión para distintas cargas de una pagina en php. Eso te lo resolverán mejor en el foro de php. Supondré que si lo intentas es porque ya sabes que eso si que se puede hacer.

Bien, también supongo por lo que preguntas que tu cargas las cosas mediante responseText y luego las separas, no? Ya que con responseXML (y cargando las tablas en forma de xml) te sería más obvia la solución.

Bien, pues así como lo planteas la solución (si es que se puede) sería montar tus cadenas con caracteres de separación. En el proceso haces un split("caracteres_de_separacion") y ya tienes tu id separado del resto.

Ahora, no te aconsejaría utilizar DIVS para guardar variables sino variables Javascript. En javascript si las variables son definidas fuera de función se mantienen siempre.

Así que antes de cargar con ajax nada puedes generar una variable con :

Código:
var mi_id_de_conexión;
y Cuando hagas el "onready==4" por ejemplo si usas como separador "###"...

[CODE]
var a=miobjetoXHR.responseText;
a=a.split("###");
responseText=a[0];
mi_id_de_conexión =a[1];
[CODE]

De esta forma se quedará ahi guardado hasta que lo necesites (porque ya fue definido antes).

Al llamar en otra funcion distinta de nuevo a ajax puedes montar el get por ejemplo:

Código:
URL="mi_pagina.php?id_link="+mi_id_de_conexión;
miObjetoXHR.open("Get",URL);
...
No tendrás que preocuparte de que la llamada a la función contenga como variable de entrada "mi_id_de_conexion" ya que repito otra vez, al haberla definido fuera será de ambito global y siempre se podrá acceder a ella.


--------------------------------

Otra forma de hacerlo si no te aclaras con esto. Sería simplemente pasar ese id de conexión por cookie. Aunque se trate de Ajax las cookies se guardan y reciben en las llamadas por XmlHttpResponse de la misma manera que con páginas cargadas.
  #6 (permalink)  
Antiguo 14/10/2006, 08:53
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
muchas gracias, entendiste muy bien mi problema, voy a analizar tu solución ,aun mis conocimientos en ajax son muy basicos.
salu2
  #7 (permalink)  
Antiguo 15/10/2006, 15:29
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading................


Otra cosa que podrias hacer es:

1.- Obtienes un ID de la base de datos
2.- creas el div con DOM y le po nes la pripiedad NAME

div=document.createElement("div");
div.name=idconexion;
document.body.appendChild(div);
de esta forma has creado un div con un nombre (el nombre es el id de conexion);

entonces para acceder al nombre, dentro del div haces .this.name eso en IE te cogerá el elemento padre de donde llamas al alert.

y en otros browsers, solo accede al elemento DIV y sacale el name;


objetodiv.name <-- tu id


connection closed.
__________________

Maborak Technologies
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 23:35.