Pages

Mostrando las entradas con la etiqueta obtain get parameter. Mostrar todas las entradas
Mostrando las entradas con la etiqueta obtain get parameter. Mostrar todas las entradas

lunes, agosto 26, 2013

Transferir variables o datos entre dos HTML, Obtener parametros pasados por GET en HTML

¿Cómo llamar de un HTML a otro enviando informacion y recibirla del otro lado?.


Generalmente uno envía información entre un html y un PHP, por ejemplo, o al lenguaje de servidor que mas les guste. Pero en este caso necesitaba servir una pagina desde PHP y no utilizar un motor de plantillas para reemplazar valores, Envié entonces un header del tipo
"header ('Location: pp.html?parametro='.$variable)", dentro del html, utilice esta funcion para leer este primer parametro que es el valor que me interesaba y transferirlo a una variable de formulario:

function leerGets() {
  var parameters = location.search.substring(1).split("&");
  var temp = parameters[0].split("=");
  document.getElementById("campo").value = unescape(temp[1]);
}
 
Vamos por partes:
 
location.search.substring(1) 

El objeto location, contiene la dirección escrita en el explorador. La propiedad search del objeto contiene el query string. Es decir que suponiendo que la direccion completa fue: http://pp.htm?parametro=xxx&param2=yyy
location.search devolvería ?parametro=xxx&param2=yyy . Al agregarle el método substring con un "1" como parámetro, cortamos el primer caracter de la cadena, en este caso el "?"
 
var parameters = location.search.substring(1).split("&")

al resultado del query string lo dividimos con la funcion split en un array de pares de valores separados por el caracter "&" y lo asignamos a una variable, en este caso parameters.
 
var temp = parameters[0].split("=");

Ahora tomamos el primer conjunto de parametro=valor (es el que me interesa a mi, aunque bien podríamos haber recorrido todo el query string) y lo volvemos a dividir pero en este caso por el carácter "=".
Es decir. parameters[0] contiene "parametro=xxx" ahora tendre un array "temp" que contendra temp[0] = "parametro" y temp[1] = "xxx".
 
document.getElementById("campo").value = unescape(temp[1]);

asignamos el valor a una variable de formulario con id="campo".
unescape(valor) me permite sacar los caracteres de codificación del query string. si por ejemplo, parámetro hubiese contenido espacios entonces habría llegado con un formato parecido a este parametro=Juan%20Perez.

Listo!. Espero que sirva.

Agregado mas tarde...

Y ya que estamos amplio la función y la convierto en algo mucho mas útil.

 
function leerGets() {
  var gets = {}; temp=[];
  var parameters = location.search.substring(1).split("&");

  parameters.forEach(function(entrada) {
              temp = entrada.split("=");
              gets[temp[0]] = unescape(temp[1]);
  });
  return gets;
}