Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/06/2006, 10:59
August
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 1 mes
Puntos: 10
Enviar variables JS y recogerlas como PHP

Tengo este script y ya intente enviar variables por medio de un iframe (Remote Scripting), lo cual lo hace pero muy tarde, y AJAX no lo hace, Veamos como va el script prueba.php

1.Creo session de usuario
Código PHP:
session_start();

if(!isset(
$_SESSION['usuario_sesion']))
{
$token=uniqid("");
$better_token uniqid(rand());
$_SESSION['usuario_sesion']=$better_token;

2. Aqui envio variables al server, se puede hacer de dos maneras

a) un metodo clasico de Remote Scripting, funciona tarde, porque tengo que recargar la pagina

Código PHP:

<script type="text/javascript"> 
function autoresol(){
var imagen = document.getElementById("imagen");
imagen.src = 'http://augustino.net/Res/ins.php?resolucion='+screen.width+'&idusuario=<?php print($_SESSION['usuario_sesion']);?>';
}
</script></head>
<body onLoad="autoresol();">
<iframe id="imagen"></iframe>
b) Usan AJAX, para empezar ni el readyState me responde

Código PHP:

<script type="text/javascript">
function initRequest() {
           // code for Mozilla, etc.
       if (window.XMLHttpRequest) {
           return new XMLHttpRequest();
       } else if (window.ActiveXObject) {
               // code for IE
           isIE = true;
           return new ActiveXObject("Microsoft.XMLHTTP");
       }
   }


    function guardarAlgoEnServer (){

        var res = screen.width;
        var url = "ins.php?resolucion="+res+"&idusuario=<?php print($_SESSION['usuario_sesion']);?>";
        
           var req = initRequest();
           req.onreadystatechange = function() {
               // if xmlhttp shows "loaded"
               if (req.readyState == 4) {
                       // if "OK"
                   if (req.status == 200) {
                       manejarRespuesta(req.responseXML);
                   } else if (req.status == 204){
                       alert("error al solicitar informacion al servidor");
                   }
               }
           }
           req.open("GET", url, true);
           req.send(null);
    }
</script>
3. Aqui recogo la consulta que se hizo atravez del iframe o del AJAX, la cual solo es obtenida si es recargada la pagina sino da un erro de que el campo no puede ser obtenido, significa que no fue hecho a "tiempo" lo que se tenia que hacer en ins.php

Código PHP:

$filares
=mysql_query("SELECT * FROM resoluciones WHERE userid='".$_SESSION['usuario_sesion']."'");

   
$laresolucionmysql_result($filares,0,'res');

echo 
$laresolucion
___Termina prueba.php

En el archivo ins.php hago un INSERT a la Base de datos de la siguiente manera:

Código PHP:

/*if[$_GET['resolucion']==""){
$res="800";
}
*/
$laid=$_GET['idusuario'];
$res=$_GET['resolucion'];
$laip=$_SERVER['REMOTE_ADDR'];
//establece una conexión con la base de datos.


$consulta_select "SELECT userid FROM resoluciones WHERE userid='" $laid "'";

$resultado=mysql_query($consulta_select,$conexion) or die("No se pudo insertar los datos en la base de datos.");

if(
mysql_num_rows($resultado) > 0
{

}
else
{
$consulta_insertar "INSERT INTO resoluciones (userid, res, ip) VALUES ('$laid', '$res', '$laip')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");


Logicamente en el caso del IFRAME cuando se esta haciendo la consulta para obtener el campo de la BD, todavia el IFRAME no carga completamente y no concluye de hacer el INSERT, y por eso cuando recargo la pagina si funciona porque ya estuvo hecho

Pero que hago para que funcione a la primera vez sin necesidad de andar recargando, porque al usuario no le voy andar diciendo que recarge la pagina, por un error mio

Agradesceria muchisimo me ayudaran, por favor

Última edición por August; 29/06/2006 a las 15:17