2011-12-10 19 views
5

Estoy tratando de obtener un valor de URL usando javascript, hasta ahora solo puedo obtener números puros, no números mixtos con letras o solo letras. No puedo encontrar ningún ejemplo funcional de una función que permita recuperar números con letras, solo números. No estoy usando ningún caracter no alfanumérico. Un valor de ejemplo que estoy tratando de pasar es "42p316041610751874cm83p2306600132141".Obtiene una variable del parámetro url usando Javascript

function getUrlVars() 
{ 
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; 
} 

var first = getUrlVars()["test"]; 

Cualquier ayuda sería genial. Gracias.

+0

Eso es extraño. Tu código debería funcionar – Blender

+0

Lo probé y funciona para mí. Usé esta URL: '' 'http: //localhost/test/index.html? Test = 42p316041610751874cm83p2306600132141'''. – FakeRainBrigand

+0

Estoy utilizando jQuery Mobile como el marco para el sitio si eso importa? – cWoolf

Respuesta

5

Aquí es una versión condensada de dos de las respuestas anteriores:

function gup (name) { 
    name = RegExp ('[?&]' + name.replace (/([[\]])/, '\\$1') + '=([^&#]*)'); 
    return (window.location.href.match (name) || ['', ''])[1]; 
} 

Más fácil de escribir, más fácil de procesamiento y, en mi humilde opinión, más fácil de leer. YMMV

0

Su código es el que debería funcionar utilizo la función de abajo si ayuda

function getParam(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]; 
} 

var first = getParam("test"); 
0

Su enfoque debería funcionar. Aquí está mi versión para la comparación:

var o = { 
    keys: [ ], 
    values: [ ] 
} 

/* 
You could just use the window#location#search value to get the query sub-String of the currently loaded URL 

var q = window.location.search.substring(1) ; 

For now we'll use a query String from a Google search for "MDN window location" 
*/ 

q = "q=mdn+window+location&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a" 

for(var i = 0 , a = q.split("&"), p ; i < a.length ; i++) { 
    p = a[i] ; 
    if( (b = p.split("=")) != null) { 
     o.keys[i] = b[0] ; 
     o.values[i] = b[1] ; 
    } 
} 


console.log("(!!) o: " + o.toSource()) ; 

3

utilizo esta función, y que las rocas. No recuerdo de donde lo tomé, pero es una buena:

function gup(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]; 
} 

Si tiene una URL como http://www.exmaple.com/path?p1=lkjsd234&p2=klsjd987, puede utilizar:

alert(gup('p1')); // shows 'lkjsd234'; 
Cuestiones relacionadas