Este es un interesante tip para recuperar los parametros de una peticion URL con javascript. ¿Y para que me puede servir?. Bueno, por ejemplo podrias implementar un pseudo-servidor en una pagina HTML que te devolviera una respuesta u otra en función de algun parametro recibido (p.ej para probar algun desarrollo en local o extension de Chrome sin necesidad de utilizar un servidor real). El tema es analizar la cadena del queryString, sin más dejo el ejemplo (hasta 3 funciones diferentes):
<SCRIPT>
// Ejemplo de pseudo server en pagina HTML
//METODO 1
function queryString( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
//METODO 2
function queryString2(parameter) {
var loc = location.search.substring(1, location.search.length);
var param_value = false;
var params = loc.split("&");
for (i=0; i<params.length;i++) {
param_name = params[i].substring(0,params[i].indexOf('='));
if (param_name == parameter) {
param_value = params[i].substring(params[i].indexOf('=')+1)
}
}
if (param_value) {
return param_value;
}
else {
return false; //Here determine return if no parameter is found
}
}
//METODO 3
function getParameter3 ( queryString, parameterName ) {
// Add "=" to the parameter name (i.e. parameterName=value)
var parameterName = parameterName + "=";
if ( queryString.length > 0 ) {
// Find the beginning of the string
begin = queryString.indexOf ( parameterName );
// If the parameter name is not found, skip it, otherwise return the value
if ( begin != -1 ) {
// Add the length (integer) to the beginning
begin += parameterName.length;
// Multiple parameters are separated by the "&" sign
end = queryString.indexOf ( "&" , begin );
if ( end == -1 ) {
end = queryString.length
}
// Return the string
return unescape ( queryString.substring ( begin, end ) );
}
// Return "null" if no parameter has been found
return "null";
}
}
function json01()
{
document.write("{'id'='1','data'='pagina1'}");
}
function json02()
{
document.write("{'id'='2','data'='pagina2'}");
}
// buscamos por parametro "q"
var pagina=queryString2("q");
// si q=1 devolver json 01
if (pagina=="1") json01();
// si q=2 devolver json 02
if (pagina=="2") json02();
// Ejemplo de uso: file:///home/jose/Escritorio/server.html?q=2
</SCRIPT>
Aunque me gusta más esta implementación basada en Jquery en la que se amplia la libreria con las nuevas funciones:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<SCRIPT>
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
// Get object of URL parameters
var allVars = $.getUrlVars();
// Getting URL var by its nam
var byName = $.getUrlVar('q');
alert("parametro q es:"+byName);
</SCRIPT>
Referencias | Jquery Howto | Web Borg | Net Lobo | The Pothoven





1 Respuesta a “Recuperar parametros URL con Javascript”