Foros del Web » Programando para Internet » Javascript »

Paso de un array en javascript

Estas en el tema de Paso de un array en javascript en el foro de Javascript en Foros del Web. Hola a todos! Tengo una página dividida en 3 frames. Desde uno de los frames(principal) necesito enviar un array a un de los otros frames ...
  #1 (permalink)  
Antiguo 02/01/2009, 07:36
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 0
Paso de un array en javascript

Hola a todos!

Tengo una página dividida en 3 frames. Desde uno de los frames(principal) necesito enviar un array a un de los otros frames (frame esquema). Lo que hago es lo siguiente:

código php

$resumenesquema=implode(",",$listaEsquema);

con el formulario que se muestra por pantalla incluyo el evento onsubmit

onSubmit="return cargar('<?php echo js_encode($resumenesquema); ?>')">

con esto consigo que el array llegue (como string, debido a la acción de implode) al método javascript.

Método javascript

function cargar(hola)
{
//split transforma el string en un array
var aux=hola.split(",");

//hago una prueba para saber si funciona bien, y compruebo que hasta aquí todo funciona correctamente
var oi=aux[0];
alert(oi);

//Le indico la url
var url="esquema.php3?hola="+ aux;

//compruebo que va bien, y en efecto funciona
//alert(url);

parent.esquema.location=url;
return true;
}

Hasta aquí todo perfecto. El problema es que al cargarlo en esquema.php3...

código esquema.php3
$datosUsuario=$_GET["hola"];
echo $datosUsuario[0];

...me imprime la 1ª letra de la palabra en vez la primera palabra(el array es un array de strings).

¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 02/01/2009, 07:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Paso de un array en javascript

Tu problema es de PHP en ese caso, no de javascript: en lugar de esto:
Código PHP:
$datosUsuario[0]; 
deberías sar esto otro:
Código PHP:
$datosUsuario
Y luego, si necesitás hacer algún parseo de eso, usar las funciones nativas para manipular String en PHP.
  #3 (permalink)  
Antiguo 02/01/2009, 08:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Paso de un array en javascript

Hola Panino5001,

Gracias por tu interés, pero creo que eso no tiene nada que ver, ya que lo que yo quiero que reciba esquema.php3 es un array en donde cada posición es un string.

Por ejemplo el array tiene 2 posiciones. 0->hola 1->adios
Cuando paso dicho array al método javascript el array sigue manteniendo las 2 posiciones, sin embargo cuando paso el array a la página esquema.php3 el array pasa a ser (por lo que veo) un string.

Un saludo
  #4 (permalink)  
Antiguo 02/01/2009, 08:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Paso de un array en javascript

Lo que estás pasando es un string, no un array. Para pasar un array tenés forzosamente que hacerlo con formularios y algún campo cuyo nombre termine en corchetes: name="algo[]", si no, siempre estás pasando strings. Ahora, para hacer algo parecido a lo que estás buscando, en lugar de trabajar con explode en php, lo que podrías hacer es usar json_encode y json_decode. O simplemente, el primer camino que te mencioné: enviar un string con una cadena separadora y tomar las variables en php con explode, por ejemplo.
  #5 (permalink)  
Antiguo 02/01/2009, 08:45
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Paso de un array en javascript

Sin formularios también podrías, pero de esta manera (notá el paréntesis cuadrado vacío detrás del nombre de variable):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<?php if(!isset($_GET['algo'])){
?>
<script>
onload=function(){
    window.location='?algo[]=1&algo[]=2&algo[]=3';
}
</script><?php }?>
</head>

<body>
<pre>
<?php print_r($_GET['algo'])  ?>
</pre>
</body>
</html>
  #6 (permalink)  
Antiguo 02/01/2009, 08:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Paso de un array en javascript

Gracias, entiendo lo que me dices.

El problema es que el formulario va hacia otra página que se carga en el frame principal.

Me explico. Mi intención es hacer lo siguiente:

Página dividida en 3 frames:
Principal
Esquema
Otro que no es de interés.

Estamos operando en el frame principal con la página principal.php3. En dicha página existe un formulario que redirige la página a sí misma(action)
<FORM Name ="EspecializacionGeneral" method ="post" action ="principal.php3" onSubmit="return cargar('<?php echo js_encode($resumenesquema); ?>')">

Pero además de esto me gustaría que cuando el usuario envíe el formulario se cargara en el frame esquema la página esquema.php3(Por eso el onsubmit). Esta página necesitaa recibir un array de string para poder mostrarlo. Dicho array de string es el que estoy intentado enviar. Por eso no puedo hacerlo mediante un campo hidden porque esto es independiente del formulario.

Lo que he intentado hacer es pasar el array que está en principal.php3 al método javascript cargar y desde ahí enviarlo por get a esquema.php3(vamos lo que he explicado en los anteriores mensajes).

Panino5001, tú que se ve que dominas mucho ¿se puede hacer?¿si no es así existe otra manera?

Un saludo y muchas gracias de verdad.
  #7 (permalink)  
Antiguo 02/01/2009, 09:24
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Paso de un array en javascript

No sé si te entendí bien. Si lo hice, podrías probar así:
Código PHP:
<script>
function 
cargar(hola)
{
var 
aux=hola.split(",");

var 
url="esquema.php3?";
for(var 
i in aux){
    
url+='hola[]='+aux[i]+'&';
}
parent.esquema.location=url;
return 
true;
}
</script> 
  #8 (permalink)  
Antiguo 03/01/2009, 07:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Paso de un array en javascript

Perfecto panino5001!

Era exactamente lo que buscaba, no sabía que se pudiera hacer así!

Muchas gracias!
Un saludo
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 07:43.