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

Problema con Javascript y PHP

Estas en el tema de Problema con Javascript y PHP en el foro de Frameworks JS en Foros del Web. Buenas tardes, estoy intentando hacer que mi página esté traducida a 4 idiomas. Tengo en mi fichero principal los iconos con las banderitas. Aquí los ...
  #1 (permalink)  
Antiguo 13/01/2012, 18:04
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Problema con Javascript y PHP

Buenas tardes, estoy intentando hacer que mi página esté traducida a 4 idiomas. Tengo en mi fichero principal los iconos con las banderitas. Aquí los muestro:


Código HTML:
Ver original
  1. <div id="Login_Languajes">
  2.             <img id="Languaje1" type="submit" src="/css/Images/england_flag.gif" width=30px; height=20px;>
  3.             <img id="Languaje2" type="submit" src="/css/Images/spanish_flag.gif" width=30px; height=20px;>
  4.             <img id="Languaje3" type="submit" src="/css/Images/french_flag.gif" width=30px; height=20px;>
  5.             <img id="Languaje4" type="submit" src="/css/Images/german_flag.gif" width=30px; height=20px;>
  6. </div>

Hasta aquí todo genial. Ahora lo que hago es que con Jquery, cuando clickeo en la banderita, me cambie el valor de la variable localStorage['languaje'] al número correspondiente a cada idioma

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.             $("#Languaje1").click(function(){
  3.                 localStorage['Languaje']=1;
  4.                 window.location.href = sURL;
  5.             });
  6.             $("#Languaje2").click(function(){
  7.                 localStorage['Languaje']=2;
  8.                 window.location.href = sURL;
  9.             });
  10.             $("#Languaje3").click(function(){
  11.                 localStorage['Languaje']=3;
  12.                 window.location.href = sURL;
  13.             });
  14.             $("#Languaje4").click(function(){
  15.                 localStorage['Languaje']=4;
  16.                 window.location.href = sURL;
  17.             });
  18. });

El problema viene ahora. Cuando hago un reload de la página, según la bandera que haya pinchado, mi valor de esa variable cambia, luego como tengo 4 archivos de idiomas con constantes, pues lo que intento es cargar esos archivos, el problema es que siempre me carga el mismo, el primero, el localStorage['languaje']=1.

Código Javascript:
Ver original
  1. if (localStorage['Languaje'] == undefined){ //checking languaje file (1-English, 2-Spanish, 3-French, 4-German
  2.             localStorage['Languaje']=1;
  3.         }else{
  4.             console.log(localStorage['Languaje']);
  5.             if (localStorage['Languaje']==1){
  6.                 <?php require_once('/framework/classes/LanguajeSpanish.php'); ?>
  7.             }else if (localStorage['Languaje']==2){
  8.                 <?php require_once('/framework/classes/LanguajeEnglish.php'); ?>
  9.             }else if (localStorage['Languaje']==3){
  10.                 <?php require_once('/framework/classes/LanguajeFrench.php'); ?>
  11.             }else if (localStorage['Languaje']==4){
  12.                 <?php require_once('/framework/classes/LanguajeGerman.php'); ?>
  13.             }
  14.         }

El porqué? pues porque debe ser que carga el primer require_once. He probado a cambiar el orden, por ejemplo

Código Javascript:
Ver original
  1. if (localStorage['Languaje']==1){
  2. <?php require_once('/framework/classes/LanguajeEnglish.php'); ?>
  3.             }else if (localStorage['Languaje']==2){
  4. <?php require_once('/framework/classes/LanguajeSpanish.php'); ?>

y que pasa? siempre se carga el de inglés en vez de como antes el de español.
Alguna idea para evitar que se cuele dentro del if si la variable no tiene ese valor?
  #2 (permalink)  
Antiguo 13/01/2012, 22:41
Avatar de ocesitaro  
Fecha de Ingreso: diciembre-2011
Ubicación: Carabayllo
Mensajes: 274
Antigüedad: 13 años
Puntos: 36
Respuesta: Problema con Javascript y PHP

no sera que estas actualizando al página en y eso ace que el valor inicial sea 1.
puedes crear una variable de session
$_SESSION['idioma']=algunidioma

y luego

<?php require_once('/framework/classes/'.$_SESSION['idioma'].'); ?>
  #3 (permalink)  
Antiguo 14/01/2012, 04:53
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con Javascript y PHP

mmm ese código que he puesto ahí, funciona, lo que pasa es que solo me lee el primer require_once, osea, no me comprueba la condición if de javascript para luego colarse en el php, no no, me carga los 4 require_once omitiendo javascript. Ya probé eso pero me tira errores por todos sitios. He probado incluso con Jquery y llamando a ajax para importarlo desde allí, pero nada.
  #4 (permalink)  
Antiguo 14/01/2012, 04:58
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con Javascript y PHP

en este caso, localStorage['Languaje'] funciona como una cookie. Es nueva en JavaScript. Lo que hago es guardar cierta información del usuario para la próxima vez que entre, tenga la misma configuración, es decir, el mismo idioma. He comprobado con un console.log() que entra por la parte del else if correspondiente, sí, lo hace. Pongo un ejemplo:
Mi localStorage['Languaje'] vale 2, entonces, lo que hago es
Código Javascript:
Ver original
  1. if (localStorage['Languaje']==1){
  2.                 <?php require_once('/framework/classes/LanguajeSpanish.php'); ?>
  3.                 console.log('1');
  4.             }else if (localStorage['Languaje']==2){
  5.                 <?php require_once('/framework/classes/LanguajeEnglish.php'); ?>
  6.                 console.log('2');

Por supuesto, en la consola compruebo y solo sale el 2, porque, efectivamente, guarda el valor 2, sin embargo, carga el require_once primero, con el archivo de Idioma Español!
  #5 (permalink)  
Antiguo 14/01/2012, 07:17
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con Javascript y PHP

a alguien se le ocurre algo?
  #6 (permalink)  
Antiguo 14/01/2012, 08:07
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con Javascript y PHP

ahora he probado con esto otro, llamo desde mi generador de la página a ajax y le envio el valor de localStorage. Guardo en ajax con una variable de sesion el nombre del archivo y por último intento cargarlo pero no carga.

Código Javascript:
Ver original
  1. if (localStorage['Languaje'] == undefined){ //checking languaje file (1-English, 2-Spanish, 3-French, 4-German
  2.             localStorage['Languaje']=1;
  3.             $.getJSON('<?php echo AJAX_URL; ?>Languaje.php',{Languaje:1});
  4.         }else if (localStorage['Languaje']==1){
  5.             $.getJSON('<?php echo AJAX_URL; ?>Languaje.php',{Languaje:1});
  6.         }else if (localStorage['Languaje']==2){
  7.             $.getJSON('<?php echo AJAX_URL; ?>Languaje.php',{Languaje:2});
  8.         }
  9.         <?php echo $_SESSION['p'];  require_once('/framework/classes/'.$_SESSION['p']);?>

y mi fichero ajax

Código PHP:
Ver original
  1. <?php
  2.     if ($_REQUEST['Languaje']==1){
  3.         $_SESSION['p']="Languaje1.php";
  4.     }else if ($_REQUEST['Languaje']==2){
  5.         $_SESSION['p']="Languaje2.php";
  6.     }
  7.     echo $_SESSION['p'];
  8. ?>

compruebo 2 cosas:
1) En el echo del ajax, cuando clickeo las banderitas, efectivamente, veo por la consola que cambia el tipo de fichero, de Languaje1.php a languaje2.php; osea, la variable $_REQUEST está funcionando
2) En el fichero principal, mi última línea es un echo, es decir, visualizo el cambio del dato de la variable de sesión, osea la variable de sesión funciona.

Lo que no funciona es esta instrucción:
Código PHP:
Ver original
  1. require_once('/framework/classes/'.$_SESSION['p']);

Eso sí, si la pongo como:
Código PHP:
Ver original
  1. require_once('/framework/classes/languaje1.php');

Esto funciona que te cagas.
Alguien me puede ayudar?

Etiquetas: javascript, php
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 10:54.