LinuxParty
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>
-
Programación
- Programar y depurar en un IDE para PHP con Eclipse, plugins PDT, xdebug y Remote debug
- Tutorial de C/C++, programar paso a paso, para Linux, Windows y Mac
- Gracias a la IA, el nuevo lenguaje de programación más popular es...
- Cómo instalar y utilizar Scikit-Learn en Linux
- Thomas E. Kurtz, coinventor de BASIC, muere a los 96 años
- Profesor de informática del MIT prueba el impacto de la IA en la formación de programadores
- Lanzamiento del IDE de código abierto Qt Creator 14 con soporte para complementos basados en Lua
- Plantillas para Joomla - Episodio 1: Plantillas, marcos y clubes o no...
- Este es el mejor libro que he visto para aprender a programar en Python en castellano desde cero, gratis y online
- ¿Deberían los niños seguir aprendiendo a programar en la era de la IA?
- La 'obsolescencia' de VBScript confirmada por Microsoft y su eventual eliminación de Windows
- El Gran Debate: ¿Deberían los Modelos de Inteligencia Artificial Ser de Código Abierto?
- El lenguaje de programación BASIC cumple 60 años
- El CEO de Nvidia dice que los niños no deberían aprender a programar
- 40 años de Turbo Pascal: recuerdos del dinosaurio codificador que revolucionó los IDE