2011-06-25 35 views
6

Necesito recuperar la URL completa con los parámetros como una cadena. Por ejemplo, necesito recuperar la siguiente URL:¿Cómo recuperar toda la URL con parámetros?

http://www.keytometals.com/page.aspx?ID=CheckArticle&site=kts&LN=EN&NM=349 

He tratado de usar:

document.location.href, 
document.URL, 
window.location.href 

pero recupera sólo una parte de la URL:

http://www.keytometals.com/page.aspx 

Cómo obtener la cadena que contiene la URL actual, así como sus parámetros?

Una actualización: He utilizado el

window.content.document.location.href 

y tengo la siguiente URL:

http://www.keytometals.com/page.aspx?ID=CheckArticle 

Por desgracia, todavía es la parte de la URL. ¿Alguien puede ayudarme a obtener toda la URL como una cadena?

Gracias!

+0

¿Qué pasa simplemente 'window.location'? –

+0

window.location.href funciona para mí. –

+0

Lamentablemente, ni window.location, ni window.location.href no funciona para mí. He intentado con el editor de Javascript en línea en http://www.w3schools.com/js/tryit.asp?filename=tryjs_write, escribiendo el document.write (window.location.href), pero el resultado es simplemente: http://www.w3schools.com/js/tryit.asp – sonjafon

Respuesta

3

Necesita simplemente document.location - que incluirá todo. Tendrá que escribir su propio código para dividirlo en el? para obtener solo la cadena de consulta y luego dividirla en pares de nombre/valor en cada &.

EDIT:

En realidad, puede utilizar location.search también. He aquí un fragmento que escribí para esto:

function loadQueryString(){ 
    var parameters = {}; 
    var searchString = location.search.substr(1); 
    var pairs = searchString.split("&"); 
    var parts; 
    for(i = 0; i < pairs.length; i++){ 
     parts = pairs[i].split("="); 
     var name = parts[0]; 
     var data = decodeURI(parts[1]); 
     parameters[name] = data; 
    } 
    return parameters; 
} 

params = loadQueryString(); 
+1

¿Por qué 'eval()'? Notación de paréntesis eres tu amigo :) – alex

+0

@alex: ¿Por qué no lo arreglaste tú solo? :) – Crozin

+0

Hmm. Bueno, supongo que cuando originalmente lo escribí, no había captado completamente el hecho de que las matrices y los objetos son esencialmente idénticos en JS. Así que sí, el corchete funciona bien. –

2

Debe utilizar window.location.href para toda la URL (incluyendo la cadena de consulta).

Eche un vistazo a Mozilla's documentation para obtener más información y otras propiedades.

Aquí hay otra buena publicación de StackOverflow sobre cómo Parse query string in JavaScript.

+0

Desafortunadamente, no funciona. Cuando intento recuperar la URL utilizando document.write (window.location.href) en http://www.w3schools.com/js/tryit.asp?filename=tryjs_write, por ejemplo, solo tengo http: //www.w3schools.com/js/tryit.asp. Solo mencionar que utilizo Mozillla Firefox 4. – sonjafon

0
function getQueryString() { 
    var key = false, res = {}, itm = null; 
    // get the query string without the ? 
    var qs = location.search.substring(1); 
    // check for the key as an argument 
    if (arguments.length > 0 && arguments[0].length > 1) 
    key = arguments[0]; 
    // make a regex pattern to grab key/value 
    var pattern = /([^&=]+)=([^&]*)/g; 
    // loop the items in the query string, either 
    // find a match to the argument, or build an object 
    // with key/value pairs 
    while (itm = pattern.exec(qs)) { 
    if (key !== false && decodeURIComponent(itm[1]) === key) 
     return decodeURIComponent(itm[2]); 
    else if (key === false) 
     res[decodeURIComponent(itm[1])] = decodeURIComponent(itm[2]); 
    } 

    return key === false ? res : null; 
} 

continuación, se utiliza de esta manera:

// get a single key (if it exists) 
var t = getQueryString('site'); 
console.log(t); 

// get the whole thing as an object 
t = getQueryString(); 
console.log(t); 
+1

¿Puede decirme cómo recuperar este objeto como una cadena? Cuando intento escribir utilizando document.write (t) simplemente escribe el "object Object" ... – sonjafon

+0

No puede escribir un objeto como una cadena, pero puede escribir una propiedad de un objeto como una cadena. Utilizando el segundo ejemplo anterior (obtener todo como un objeto), si desea escribir la clave 'sitio' para el documento, sería' document.write (t.site) '. –

Cuestiones relacionadas