Ir al contenido principal

Leer variables enviadas mediante los métodos POST y GET combinando PHP, javascript y jQuery

   En este post voy a tratar de explicar como enviar y leer variables con los métodos $_POST y $_GET de PHP. Antes de nada deciros que tiene relación con los posts: problemas que surgen al recargar div contenedor y código PHP y javascript para redireccionar a otra página. Podéis echarle un vistazo si queréis. También está relacionado con la página del taller de mecánica que le he hecho a un amigo.

   Bueno, vamos al grano. En un post anterior ya comenté como, mediante el método load() de jQuery, enviábamos una variable a una página y la recogíamos con el método $_POST en PHP. Ahora voy a comentar como enviar una variable con el método $_GET y recogerla usando javascript.  La siguiente línea, perteneciente al código que os comentaba del anterior post, nos puede ayudar:

<?php
   if (!isset($_POST['primera']))echo "<SCRIPT>location.href='index.html?pag=2';</SCRIPT>";
?>

   Como podéis ver, el anterior código combina PHP y javascript para redireccionar a otra página enviando, mediante el método $_GET, una variable a la página solicitada ('pag=2'). Como sabéis, enviando '?nombrevariable=loquesea' al final de la url, la variable y su valor lo tenemos que recoger en la página solicitada con el método $_GET de PHP, pero, en este caso lo vamos a hacer en javascript, ¿como?. Primero, escribiendo (o copiando) el siguiente código javascript entre los <head> de nuestra página (código que encontré por ahí, todo hay que decirlo):

   <script type="text/javascript">
    (function(){
    var $_GET = function (param) {
        var delimiter = "?"; 

        var separator = "&";
        var url = location.href;
        var get_exists = (url.indexOf(delimiter) > -1) ? true : false;
        if (get_exists) {
            var url_get = {};
            var params = url.substring(url.indexOf(delimiter)+1);
            var params_array = params.split(separator);
            for (var i=0; i < params_array.length; i++) {
                var param_name = params_array[i].substring(0,params_array[i].indexOf('='));
                var param_value = params_array[i].substring(params_array[i].indexOf('=')+1);
                url_get[param_name] = param_value;
            }
            return (param !== undefined && !!url_get[param]) ? url_get[param] : url_get;
        }
        return false;
    }
    window.$_GET = $_GET();
})();
</script>


   Para los que saben javascript (y los que no lo sabemos) no me voy a extender mucho explicando este script. Sólo decir que lo que hace es agregar la variable $_GET al objeto window y poder usarla después igual que en PHP. Por ejemplo del siguiente modo:

   var cargadiv=function(){
    if ($_GET['pag']){  // si nos devuelve 'true' se ejecuta lo siguiente:
        var npag=$_GET['pag'];//obtenemos en npag el valor de pag
        var href="index-"+npag+".php";//href contiene ahora el nombre de la página
        $("#content").fadeOut(500,function(){//hacemos desaparecer el div 'content' y, cuando desaparezca ejecutamos la siguiente linea
        $("#content").load(href,{primera:"no"}).fadeIn(700);//hacemos aparecer el div 'content' con el nuevo contenido (la página cuyo nombre contiene href y a la cual enviamos la variable 'primera' con el valor 'no' )
        });//fin de fadeOut
    };//fin de if
}//fin de function (cargadiv)


   Esta función la tengo, junto con otras, en un archivo aparte con la extensión .js y la llamo, después, en la página, si la necesito.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod