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

pasar un array a una función de Xajax

Estas en el tema de pasar un array a una función de Xajax en el foro de Frameworks JS en Foros del Web. Hola, estoy intentando pasar un array que contiene varios strings a una función Xajax de la siguiente manera: Código PHP: echo  "<script type='text/javascript'>" ; echo     "xajax_mostrar('" ...
  #1 (permalink)  
Antiguo 11/04/2008, 06:37
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta pasar un array a una función de Xajax

Hola, estoy intentando pasar un array que contiene varios strings a una función Xajax de la siguiente manera:
Código PHP:
echo "<script type='text/javascript'>";
echo    
"xajax_mostrar('".$num."','".$rutafoto."','".$cont."');";
echo 
"</script>"
Donde las variables $num y $cont son numéricas de tipo integer, y $rutafoto es el array del que hablo.
Al pasarlas a la función, las recojo cómo:
Código PHP:
function mostrar($num,$rutafoto,$cont){
...

Veo que las variables numéricas me las pasa a tipo string, pero las vuelvo a convertir fácilmente a tipo integer con:
Código PHP:
settype($num,'int');
settype($cont,'int'); 
El problema viene cuando quiero reconvertir que la variable $rutafoto, que me la ha pasado a tipo string y le ha puesto como contenido "Array".

¿Cómo puedo hacer para pasar un array a una función de Xajax sin perder el contenido?
  #2 (permalink)  
Antiguo 11/04/2008, 07:18
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 6 meses
Puntos: 5
Re: pasar un array a una función de Xajax

Buenas
Dado que se trata de lenguajes diferentes y de hecho lo que haces es generar código en JS desde PHP no puedes pasar una variable de tipo array de uno a otro así sin más. De hecho en PHP si haces
Código PHP:
<?php
$variable 
= array(0=>"valor"1=>"valor");
echo 
$variable;
?>
Lo que te dará por pantalla será "array", y esto es lo que te devuelve.

Yo lo que veo es que tendrás que pasar cada valor del array como un parámetro
Código PHP:
<?php
$variable 
= array(0=>"valor"1=>"valor");
$cadena '';
for (
$i=0$i<count($variable$i++) $cadena .= "'".$variable[$i]."',";
$cadena substr($cadena0strlen($cadena)-1)); // Esto es para quitar la ultima ,  añadida
echo "<script type=\"text/javascript\">\n"
echo 
"xajax_mostrar('{$num}', '{$cont}', {$cadena});\n";
echo 
"</script>\n";
?>
Al no tratarse de arrays podemos prescindir de meter las variables entre {}, pero la fuerza de la costumbre...
También podemos prescindir de meter las variables entre comillas simples si se trata de valores numéricos.

Última edición por mgusdl; 11/04/2008 a las 07:21 Razón: agregar detalles
  #3 (permalink)  
Antiguo 11/04/2008, 07:28
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 6 meses
Puntos: 5
Re: pasar un array a una función de Xajax

Para lo de los tipos de variables también puedes usar la funcion intval
Código PHP:
$var intval($var); 
Ya que PHP gestiona los tipos de variable dinámicamente (lo cual se agradece respecto al lenguaje C)
No suelo usar la función settype, además intval devuelve 0 si tiene algún valor no numérico, lo cual es una ventaja si quieres desechar valores tipo numérico y carácter mezclados
  #4 (permalink)  
Antiguo 11/04/2008, 08:18
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Re: pasar un array a una función de Xajax

La solución de pasar cada valor del array como parámetro a la función, en un principio no me sirve porque el array se llena de valores obtenidos de una base de datos y por tanto cada vez que se cargue la página puede ser distinto.
Se me había ocurrido nombrarlo como variable global, pero no veo el modo de que me lo detecte. De hecho, cuando dentro de la función de Xajax escribo:
Código PHP:
global $rutafoto;
gettype($rutafoto); 
la función gettype me dice que el tipo de $rutafoto es NULL, lo que supongo que quiere decir "vacío", no?
¿A alguien se le ocurre otra solución?
Muchas gracias por las respuestas.
  #5 (permalink)  
Antiguo 11/04/2008, 09:58
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 6 meses
Puntos: 5
Re: pasar un array a una función de Xajax

Y convertir el array de PHP en un array en JS??
Código PHP:
<?
echo "<script type=\"text/javascript\">";
echo 
"var rutafoto = Array();";
for (
$i=0$i<count($rutafoto); $i++) echo "rutafoto[] = '{$rutafoto[$i]}';
echo    "
xajax_mostrar('$num'rutafoto'$cont');n";
echo "
</script>";
?>
  #6 (permalink)  
Antiguo 11/04/2008, 10:20
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Re: pasar un array a una función de Xajax

Cita:
Iniciado por mgusdl Ver Mensaje
Y convertir el array de PHP en un array en JS??
Código PHP:
echo    "xajax_mostrar('$num', rutafoto, '$cont');\n"
¿Qué quiere decir la "n" final de la línea?
¿Es el salto de línea?
Un saludo y gracias por la idea, la estoy probando.
  #7 (permalink)  
Antiguo 14/04/2008, 00:51
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 6 meses
Puntos: 5
Re: pasar un array a una función de Xajax

Cita:
Iniciado por iontxu Ver Mensaje
¿Qué quiere decir la "n" final de la línea?
¿Es el salto de línea?
Un saludo y gracias por la idea, la estoy probando.
Efectivamente \n dentro de una cadena entre " es un salto de línea. A efectos de visualización no hay ningún cambio, pero cuando ves el código fuente queda más ordenado y es más sencillo buscar errores.
Si además usas tabulación \t queda además tabulado.
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 14:38.