LinuxParty

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

En este texto, comprobamos que las variables $mivarPhp y mivarJS pueden intercambiarse entre PHP y JavaScript

Es importante y debes recordar, que JavaScript es "Case Sensitive", lo que quiere decir que distingue los nombres de las variables en mayúsculas y minúsculas, y por lo tanto, debes de escribir tus variables siempre con tu misma política de programación.


<!-- ============================================= -->
<!-- Intercambio de una variable de PHP a JavaScript -->
<!-- ============================================= -->

<?php $mivarPhp = "Asignado en PHP"; 
echo $mivarPhp."\n<br>"; ?> <script type="text/javascript"> var mivarJS ="Asignado en JS";
alert (mivarJS);
mivarJS="<?php echo $mivarPhp ?>";
alert (mivarJS);
</script>

Puede copiar todos los ejemplos, uno debajo de otro, creando un único fichero llamado "prueba.php" y comprobar las salidas. Te lo recomiendo.


<!-- ============================================= -->
<!-- Intercambio de una variable de JavaScript a PHP -->
<!-- ============================================= -->


<?php $mivarPhp=
'<script type="text/javascript">; var mivarJS="Asignado en JS"; document.writeln (mivarJS); </script>';
echo $mivarPhp."\n<br>"; echo '<br>Comprobar si es \\$mivarPhp igual que "Asigando en JS"<br>'; if ($mivarPhp == "Asigando en JS") echo "Es igual.<br>"; else echo "Es distinto.<br>"; ?> <!-- El principal problema de este punto, es que la variable no contendrá el valor propiamente dicho, sino el script que reproducirá un valor, y puede que sólo te interese para puntos muy concretos donde no tienes que comprobar valores -->

En los arrays, para hacer un intercambio "simple" sin tener que utilizar librerías externas como JSON, JQuery ni demás podemos hacer este pequeño truco, que consiste en fusionar todos los elemenos de un array, en una única variable que tendrá un elemento en común que los separa, en este caso: '|' después, en PHP separaremos los elementos utilizando ese mismo elemento.


<!-- ============================================= -->
<!-- Intercambio de un ARRAY de JavaScript a PHP -->
<!-- ============================================= -->

 <script>
     a = new Array(0,1,2,3,4,5,6,7,8,9);
function implode(array){
var imploded=array[0];
for (i=1; i<array.length; i++)imploded += '|' + array[i];
return imploded
}
alert(implode(a))
</script>

<?php $tuVariable=
'<script type="text/javascript">; document.writeln (a); </script>';
echo "\nValor de tuVariable.: ".$tuVariable."\n<br>"; ?> <?php $tuVector = explode('|',$tuVariable); print_r($tuVector); for ($i=0; $i<=count($tuVector);$i++) echo "\n<br>(".$i.")".$tuVector[$i]."\n<br>"; ?>

Para el caso de PHP a JavaScript, es tan sencillo como hacer el código de abajo, basado en el código de arriba pero con ligeras modificaciones.


<!-- ============================================= -->
<!-- Intercambio de un ARRAY de PHP a JavaScript -->
<!-- ============================================= -->
<?php
//...
$array_php = array(23, 24, 33, 55, 77);
//...
?>

<?php
$i=0;
echo "\n<br>Elementos contados...:".count($array_php)."<br>\n";
echo "\n".'<script type="text/javascript">';
echo "\nvar array_js = new Array(".implode(",",$array_php).");";
echo "\ndocument.writeln (array_js);\n";
echo "\nalert(array_js[2]);\n";
echo "\n</script>";
?>

Este es un ejemplo más elaborado de intercambio de datos a través de JavaScript.



***********************************
***********************************
<!-- ============================================= -->
<!-- Intercambio de una variable de JavaScript a PHP -->
<!-- ============================================= -->
<br>
<br>
<a name="1"></a><br>
<a href="#1" id="link1">Click me!</a>

<script>
var js_var1 = "<br />Hello world from JavaScript1";
document.getElementById("link1").onclick = function () {
window.location = "?js_var1=" + js_var1;
}
</script>

<?php
if (isset($_GET['js_var1'])) $php_var1 = $_GET['js_var1'];
else $php_var1 = "<br />js_var1 <b>No ha sido iniciado</b>, pinche en -Click me-!";

echo "Valor link1.: ".$php_var1;
?>



Este ejemplo, utilizamos AJAX , más elaborado todavía, que el anterior requiere un fichero separado llamado "process.php"

<!-- ============================================= -->
<!-- Intercambio de una variable de JavaScript a PHP -->
<!-- ============================================= -->
<br>
<br>
<a name="2"></a><br>
<a href="#2" id="link2">Click me!</a>
<div id="update"></div>

<script type="text/javascript">
var js_var = "<br />Hello world from JavaScript2";
document.getElementById("link2").onclick = function () {
// ajax start
var xhr;
if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // all browsers
else xhr = new ActiveXObject("Microsoft.XMLHTTP"); // for IE

var url = '/tmp/process.php?js_var=' + js_var;
xhr.open('GET', url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState===4 && xhr.status===200) {
var div = document.getElementById('update');
div.innerHTML = xhr.responseText;
}
}
xhr.send();
// ajax stop
return false;
}
</script>

**********************************************************************
**********************************************************************

FICHERO SEPARADO.:  process.php





<!-- ============================================= -->
<!-- Fichero Separado /tmp/process.php (el directorio /tmp/ es en mi caso y ejemplo-->
<!-- ============================================= -->

<?php
if (isset($_GET['js_var'])) $php_var = $_GET['js_var'];
else $php_var = "<br />js_var is not set!";

echo "\n<br>Valor desde process.php.: ".$php_var;
echo "\n<br>";
?>

**********************************************************************
**********************************************************************

El ejemplo anterior tiene una limitación, el valor de la variable $php_var no puede compartirse con el fichero principal.

 



Este ejemplo, es una solución que yo os propongo para vuestros posibles intercambios. (copiar a fichero separado, como ejemplo3.php)


<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<script type="text/javascript">
function calcula(form) {
if (confirm("¿Son correctos los datos introducidos? \n"+
"\nUsuario...:"+form.dniusuario.value+
"\nContraseña:"+form.contrasena.value+
"\nCategoría.:"+form.listaname.value)){
window.location.href= "?usuario="+form.dniusuario.value+"&contrasena="+form.contrasena.value+"&categoria="+form.listaname.value;
} else {
alert("Vuelva a intentarlo...")
}
}
</script>

</head>
<body>

<a name="obtenvalores"></a><br>
<?php
if (empty($usuario))
{
$usuario = $_GET['usuario'];
}

if (empty($contrasena))
{
$contrasena = $_GET['contrasena'];
}

if (empty($categoria))
{
$categoria = $_GET['categoria'];
}
?>
<FORM>
Debe introducir un DNI del usuario, este será el nombre del usuario para el proceso de validación para entrar en el sistema.
<br>
DNI del usuario.................:
<INPUT TYPE="text" NAME="dniusuario" VALUE="<?php echo $usuario ?>" SIZE=15>
<br>
Si introduce el email, se generará una contraseña y ésta será enviada al usuario.
<br>
Cambie la contraseña (no necesario):
<INPUT TYPE="text" NAME="contrasena" VALUE="@M1c0nt4@L" SIZE=15>
<br>
El usuario puede tener una o varias categorías, deberá subir todos los ficheros de la misma categoría.
<br>
Categoría para los ficheros:
<select name="listaname">
<option>UNO</option>
<option>DOS</option>
<option>TRES</option>
<option>CUATRO</option>
</select>
<br>
<INPUT TYPE="button" NAME="Boton" VALUE="Comprueba" ONCLICK="calcula(this.form)">
<hr>
<br>
Usuario...:
<INPUT TYPE="text" NAME="resultado" VALUE="<?php echo $usuario ?>" SIZE=15>
<br>
Selección.:
<INPUT TYPE="text" NAME="opcion" VALUE="<?php echo $categoria ?>" SIZE=15>
<br>
Contraseña:
<INPUT TYPE="text" NAME="opcion" VALUE="<?php echo $contrasena ?>" SIZE=15>
<br>
<hr>
</FORM>

<?php
if (empty($usuario))
{
echo "comprueba user";
$usuario = $_GET['usuario'];
}

echo "\n<br>phpUsuario..:".$usuario;
echo "\n<br>";

if (empty($contrasena))
{
echo "comprueba contra";
$contrasena = $_GET['contrasena'];
}

echo "\n<br>phpContraseña.:".$contrasena;
echo "\n<br>";

if (empty($categoria))
{
echo "comprueba categ";
$categoria = $_GET['categoria'];
}
echo "\n<br>phpCategoria.:".$categoria;
?>

</body>
</html>


 
Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política