2012-02-04 11 views
8

Estaba investigando este problema, pero no pude encontrar ninguna respuesta sólida para este propósito específico. Vamos a decir que tengo una URL de ...¿Cómo elimino las variables de obtención y el nombre de archivo de la URL usando javascript/jquery?

http://mysite.com/stuff/index.php?search=my+search

¿Cómo puedo agarrar esta URL y eliminar index.php? Search = mi + búsqueda de ella por lo que sólo sería http://mysite.com/stuff/? Básicamente solo quiero tomar la URL principal sin un nombre de archivo o obtener variables ... No importa cuál sea la URL (así que no tengo que personalizar la función para cada página en la que quiero usarlo)

Así que para un ejemplo adicional, si fuera sólo ...

http://mysite.com/silly.php?hello=ahoy

yo apenas quiere volver la raíz de http://mysite.com

¿alguien puede darme una mano en calcular esto? Estoy completamente perdido.

Respuesta

17

Intente utilizar lastIndexOf("/"):

var url = "http://mysite.com/stuff/index.php?search=my+search"; 
url = url.substring(0, url.lastIndexOf("/") + 1); 
alert(url); // it will be "http://mysite.com/stuff/" 

O

var url = "http://mysite.com/silly.php?hello=ahoy"; 
url = url.substring(0, url.lastIndexOf("/") + 1); 
alert(url); // it will be "http://mysite.com/" 
+0

Gracias, me imagino que voy a estar utilizando lastIndexOf constantemente ahora. – Ian

+0

Feliz de ayudar ... – Aliostad

+0

'console.log (url)' es mucho, mucho mejor que alerta. – Tim

0

Está buscando location.host o location.hostname. ¿Pero le gustaría extraerlos de una cadena completa en lugar de la URL actual?

leí la pregunta una vez más y parece que desea obtener la cadena que consiste en:

location.protocol + "//" + location.host + location.pathname 

¿verdad?

+4

'' location.pathname' contendrá index.php' –

2

Si la URL está en str:

newstr = str.replace(/\/[^\/]+$/,""); 

newstr ahora contiene la ruta hasta, pero sin incluir el último / en la cuerda. Para mantener la final /, utilice:

newstr = str.replace(/\/[^\/]+$/,"/"); 
2

dividida en "/", deseche la última pieza, unirse a ellos una copia de seguridad, añadir una barra final.

var path = location.href.split('/'); 
path.pop(); 
path = path.join("/") + "/"; 
Cuestiones relacionadas