Soy nuevo en jQuery y tengo problemas para obtener los parámetros de una URL que genera mi servidor. Tengo una url como esta:
<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; }); });Al hacer clic en el enlace, debería mostrarme "2", sin embargo, no obtengo nada ... ¿alguna ayuda para un novato de jQuery? ¡gracias de antemano!
Encontré esto en un blog: http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
No necesita jQuery para ese propósito, puede usar 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)
pequeña mejora, analice la URL solo una vez, devuelva una matriz o parámetros:
function getURLParameters(url){ var result = {}; var hashIndex = url.indexOf("#"); if (hashIndex > 0) url = url.substr(0, hashIndex); 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; }es muy fácil, todo lo que tiene que hacer es poner el nombre de la variable que desea de la URL en esta función y luego le devolverá el valor de la variable URL
function getParameterByName(name) { return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null; }