• Publicidad

Ajax y variables de sesión PHP

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Ajax y variables de sesión PHP

Notapor desdechina » 2013-10-09 08:07 @380

Hola:

Lo que intento hacer es utilizar Ajax para pedir unos datos a mi BD y guardarlos en variables de sesión de PHP y después mostrarlos en campos de la web.

Por un lado tengo esta función que la llamo con el evento onclick de una lista desplegable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. function show(str)
  2.  {
  3.          
  4.  if (str=="0")
  5.    {  
  6.    document.formparam.tbaseloc.value="";
  7.    document.formparam.tmeasure.value="";
  8.    return;  
  9.    }
  10.    
  11.  if (window.XMLHttpRequest) {
  12.         // code for IE7+, Firefox, Chrome, Opera, Safari
  13.         xmlhttp=new XMLHttpRequest();
  14.  } else if (window.ActiveXObject) {
  15.         // code for IE6, IE5
  16.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  17.  } else {
  18.         alert("Your browser does not support XMLHTTP!");
  19.  }
  20.    
  21.  xmlhttp.open("GET","showparam.php?code=1",true);
  22.  xmlhttp.send();
  23.  
  24.  document.formparam.tbaseloc.value="<?php
  25. if (isset($_SESSION['baseloc'])){
  26. echo $_SESSION['baseloc'];
  27. }
  28. else{
  29.         echo "?error";
  30. }
  31. ?>";
  32.  document.formparam.tmeasure.value="<?php
  33. if (isset($_SESSION['measure'])){
  34. echo $_SESSION['measure'];
  35. }
  36. else{
  37.         echo "?error";
  38. }
  39. ?>";
  40.  }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y por otro lado mi código en showparam.php es el siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. <?php
  2. session_start();
  3.  
  4. $paramcode = $_GET['code'];
  5. //$paramcode=2;
  6.  
  7.  
  8. include('admin/connect_DB.php');
  9.  
  10. $sql="SELECT * FROM in_param where grab_code='".$paramcode."'";
  11. //$sql="SELECT * FROM in_param where grab_code=2";
  12. $result = mysql_query($sql);
  13. $param = mysql_fetch_array($result);
  14.  
  15. if( $param ){          
  16.         $_SESSION['baseloc'] = $param['base_loc'];
  17.         $_SESSION['measure'] = $param['measure'];
  18.        
  19.         $_SESSION['loadparam']="1";
  20. }
  21. else{
  22.         $_SESSION['baseloc']="";
  23.         $_SESSION['measure']="";
  24.        $_SESSION['loadparam']="1";
  25. }
  26.  
  27. mysql_close();
  28.  
  29.  ?>
Coloreado en 0.026 segundos, usando GeSHi 1.0.8.4


El problema es que no muestra los valores de las variables de sesión al seleccionar un elemento de la lista desplegable. Es como si no pasase por showparam.php.

Sin embargo, si recargo la página en el navegador, ya sí que me funciona.

Es como si las variables de sesión no tuviesen ningún valor hasta que recargo la página, y es más: al recargar la página, entonces sí que me muestra las variables de sesión con los valores correctos.

No sé si me he explicado bien ya que al menos para mí es algo lioso.

Gracias por vuestra ayuda.
Última edición por explorer el 2013-10-09 10:40 @486, editado 2 veces en total
Razón: Poner marcasde código
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Publicidad

Re: Ajax y variables de sesión PHP

Notapor desdechina » 2013-10-10 06:47 @324

Creo que empiezo a ver por dónde está el error pero no sé cómo solucionarlo.

Me da la sensación de que el código que está en showparam.php se ejecuta correctamente y me guarda bien los valores en las variables de sesión.

Pero en la función show() es como si no hiciese caso a la parte donde le digo que muestre los valores, vamos, que lo que hay detrás de

xmlhttp.open("GET","showparam.php?code="+str,true);
xmlhttp.send();


no se hace.

Al refrescar la página me aparecen los valores en los campos correspondientes ya que en la página HTML tengo puesto: <input name="tbaseloc" type="text" id="baseloc" value=<?php echo $_SESSION['baseloc']; ?> y por ello toma los valores de mis variables de sesión.

¿Puede ser? ¿Cómo lo soluciono?
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Ajax y variables de sesión PHP

Notapor explorer » 2013-10-10 16:35 @733

El código PHP se ejecuta solo en el servidor, y solo en el momento de servir la página. Entonces, en la función en JavaScript show(), los dos trozos de código PHP se resuelven sólo en el momento de ser servida la página, no después, cuando la página y el código JavaScript ya están en el navegador del cliente.

Debes leer la respuesta que el GET devuelve, y poner un trozo de código en JavaScript que coloque lo devuelto en las cajas y elementos HTML correspondientes. Y en el código showparam.php, no debes devolver los datos solo a _SESSION, sino a la salida estándar, para que sean recogidos por el código JavaScript.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ajax y variables de sesión PHP

Notapor nicoleliana » 2013-11-06 04:02 @209

Hola. No sé si pueda intervenir en este foro, pero tengo adicionalmente una pregunta.

Yo estoy usando Ajax para almacenar información en mi BD, que he tomado en variable con Input a través de PHP, pero los códigos como el '€' o '&' no me quedan grabados correctamente. En el caso del Euro guarda '?' y en el de '&' simplemente no lo almacena. He leído acerca del utf8 encode y decode pero no logro aplicar la sintaxis correctamente. ¿Podrían quizás ayudarme?. Si es así les puedo enviar el código y si no, pues agradezco su atención.
nicoleliana
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2013-11-06 03:23 @182


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron