Ver Mensaje Individual
  #9 (permalink)  
Antiguo 15/05/2009, 09:15
Avatar de anlhp
anlhp
 
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: pasar variables para funciones php desde javascript

primera forma y utilizando lo que dijo pateketrueke, esta funcion de php te devuelve el equivalente en notacion json del arreglo de php(muy util si tienes que hacer mas cosas con dicho arreglo, no solo pasarselo a javascript)
asi quedaria

script.php
Código PHP:
function getTablero()
{
    
$fichas = array();
    
$pos_fichas = array();
    
    
$fichas[] = 3;
    
$fichas[] = 5;
    
    
$pos_fichas[] = 20;
    
$pos_fichas[] = 10;
    
    
$tablero = array();
    for(
$i 0$i count($fichas); $i++)
    {
    
        
$tablero[$pos_fichas[$i]] = $fichas[$i];    
        
    }
    
    return 
$tablero;
}

function 
convertirTablero($tablero)
{
    return 
json_encode($tablero);

pagina.html
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<?php
		require_once 'script.php';
		$tablero = getTablero();
		?>
		<script type="text/javascript">
			var tablero = eval(<?php echo convertirTablero($tablero);?>);
			alert(typeof tablero); //ALERTA 'OBJECT'
                        alert(tablero.20);//DA ERROR;
                        alert(tablero[20]);//ALERTA 3	
		</script>
		<title></title>
	</head>
	<body>
	</body>
</html> 
de esta forma no tendras un arreglo en javascript sino un objeto cuyas propiedades son las claves del arreglo de php y los valores de cada clave pues los correspondientes al arreglo de php

segunda forma
script.php
Código PHP:
function getTablero()
{
    
$fichas = array();
    
$pos_fichas = array();
    
    
$fichas[] = 3;
    
$fichas[] = 5;
    
    
$pos_fichas[] = 20;
    
$pos_fichas[] = 10;
    
    
$tablero = array();
    for(
$i 0$i count($fichas); $i++)
    {
    
        
$tablero[$pos_fichas[$i]] = $fichas[$i];    
        
    }
    
    return 
$tablero;
}

function 
convertirTablero($tablero)
{
    return 
json_encode($tablero);
}

function 
getArrayTablero($tablero_php)
{
    
$tablero_js 'var tablero = [];';
    foreach(
$tablero_php as $key=>$value)
    {
        
$tablero_js .= 'tablero['.$key.'] = "'.$value.'";';    
    }
    
    return 
$tablero_js;

hemos añandido una tercera funcion que devolvera la cadena de un array javascript
luego
pagina.html
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<?php
		require_once 'script.php';
		$tablero = getTablero();
		?>
		<script type="text/javascript">
			eval('<?php echo getArrayTablero($tablero);?>');
			alert(typeof tablero);//ALERTA OBJETO PORQUE LOS ARRAYS EN
                                                      //JAVASCRIPT SON DE HECHO, OBJETOS
                        alert(tablero[20]);//ALERTA 3
		</script>
		<title></title>
	</head>
	<body>
	</body>
</html> 
por tanto que forma es la mejor? pues yo creo que la primera, te ahorras la creacion de una funcion ya que mires por donde lo mires, el arreglo que pasaras de php a javascript, este ultimo lo mirara como un objeto pero lo podras tratar siempre como un arreglo
cualquier preguntilla ya sabes ;)