hasclass - jQuery: ¿Cómo obtener los parámetros de una url?
jquery find (8)
Nuevo en jQuery y tengo problemas para obtener los parámetros de una URL que genera mi servidor. Tengo un url como este:
<span class="popuptest"><a href="www.example.com/test?param1=1¶m2=2">find param</a></span>
Mi función jquery se ve así:
$(function() {
$(''.popuptest a'').live(''click'', function(event) {
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = this.href.slice(this.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];
}
});
var second = getUrlVars()["param2"];
alert(second);
return false;
});
});
hacer clic en el enlace debería mostrarme "2", sin embargo, no obtengo nada ... ¿alguna ayuda para un jQuery noob? ¡gracias por adelantado!
Encontré esto en un blog: http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
No necesitas jQuery para eso, puedes usar el JavaScript puro:
function getParameterByName( name,href )
{
name = name.replace(/[/[]/,"///[").replace(/[/]]/,"///]");
var regexS = "[//?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( href );
if( results == null )
return "";
else
return decodeURIComponent(results[1].replace(//+/g, " "));
}
y puede llamar a la función de esta manera .. getParameterByName(param1,href of your link)
Tan simple que puedes usar cualquier URL y obtener valor en Javascript. Y esto es un conjunto completo de códigos
<!DOCTYPE html>
<html>
<head>
<script>
var tech = getQueryVariable(''filename'');
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
alert(tech);
</script>
</head>
<body>
<p>Get parameters of a url</p>
</body>
</html>
Tu jQuery podria ser
$(function() {
$(''.popuptest a'').live(''click'', function(event) {
$.extend({ getUrlVars: function(){
var vars = [], hash;
var hashes = $(''.popuptest a'').attr("href").slice($(''.popuptest a'').attr("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];
}
});
var second = $.getUrlVars()["param2"];
alert(second);
return false;
});
});
cosas a tener en cuenta:
- $ .getUrlVars en línea - var segundo = $ .getUrlVars () ["param2"];
- this.href se reemplaza a $ (''. popuptest a''). attr ("href")
Usando el código a continuación durante algún tiempo, pero recientemente descubrí un problema con una cadena base64_encode en la URL, que tiene == al final, como: /index.php?a=1&b=2&c=Mw==&d=4.
El uso de getUrlVar ("c") me da ''Mw'' como resultado, pero debería ser ''Mw =='', así que agregue una línea adicional:
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = $(''.popuptest a'').attr("href").slice($(''.popuptest a'').attr("href").indexOf(''?'') + 1).split(''&'');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split(''='');
vars.push(hash[0]);
if (hash.length > 2) hash[1] = hash.slice(1).join(''='');
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
desde here
$.urlParam = function(name){
var results = new RegExp(''[/?&]'' + name + ''=([^&#]*)'').exec(window.location.href);
return results[1] || 0;
}
// example.com?param1=name¶m2=&id=6
$.urlParam(''param1''); // name
$.urlParam(''id''); // 6
$.urlParam(''param2''); // null
es tan fácil, todo lo que tiene que hacer es poner el nombre de la variable que desea de la URL en esta función, luego le devolverá el valor de la variable de la URL
function getParameterByName(name) {
return decodeURIComponent((new RegExp(''[?|&]'' + name + ''='' + ''([^&;]+?)(&|#|;|$)'').exec(location.search)||[,""])[1].replace(//+/g, ''%20''))||null;
}
pequeña mejora, analiza la url solo una vez, devuelve array o params:
function getURLParameters(url){
var result = {};
var searchIndex = url.indexOf("?");
if (searchIndex == -1 ) return result;
var sPageURL = url.substring(searchIndex +1);
var sURLVariables = sPageURL.split(''&'');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split(''='');
result[sParameterName[0]] = sParameterName[1];
}
return result;
}
function getURLParameter(name) {
return decodeURI(
(RegExp(name + ''='' + ''(.+?)(&|$)'').exec(location.search)||[,null])[1]
);
}