parse url javascript
Analizar una URL en JavaScript (12)
¿Cómo puedo analizar una URL con JavaScript (también con jQuery)?
Por ejemplo, tengo esto en mi cadena,
url = "http://example.com/form_image_edit.php?img_id=33"
Quiero obtener el valor de img_id
Sé que puedo hacer esto fácilmente con PHP con parse_url()
, pero quiero saber cómo es posible con JavaScript.
Algo como esto debería funcionar para ti. Incluso si hay múltiples valores de cadena de consulta, esta función debería devolver el valor de la clave deseada.
function getQSValue(url)
{
key = ''img_id'';
query_string = url.split(''?'');
string_values = query_string[1].split(''&'');
for(i=0; i < string_values.length; i++)
{
if( string_values[i].match(key))
req_value = string_values[i].split(''='');
}
return req_value[1];
}
Escribí una biblioteca de análisis de JavaScript url, URL.js , puede usarlo para esto.
Ejemplo:
url.parse("http://mysite.com/form_image_edit.php?img_id=33").get.img_id === "33"
Esto debería solucionar algunos casos extremos en la respuesta de kobe:
function getQueryParam(url, key) {
var queryStartPos = url.indexOf(''?'');
if (queryStartPos === -1) {
return;
}
var params = url.substring(queryStartPos + 1).split(''&'');
for (var i = 0; i < params.length; i++) {
var pairs = params[i].split(''='');
if (decodeURIComponent(pairs.shift()) == key) {
return decodeURIComponent(pairs.join(''=''));
}
}
}
getQueryParam(''http://example.com/form_image_edit.php?img_id=33'', ''img_id'');
// outputs "33"
Existe un buen plugin de jQuery Purl (un analizador de URL de JavaScript) . Esta utilidad se puede usar de dos maneras: con jQuery o sin ...
Prueba esto:
var url = window.location;
var urlAux = url.split(''='');
var img_id = urlAux[1]
Puede usar el plugin jquery http://plugins.jquery.com/url . $.url("?img_id")
devolverá 33
Puede usar un truco para crear un elemento a, agregarle la url y luego usar su objeto Location .
function parseUrl( url ) {
var a = document.createElement(''a'');
a.href = url;
return a;
}
parseUrl(''http://example.com/form_image_edit.php?img_id=33'').search
Que dará salida ?img_id=33
También puede usar php.js para obtener la función parse_url en JavaScript .
Actualización (05-07-2012)
Recomendaría utilizar la excelente biblioteca URI.js si necesita hacer algo más que el manejo súper simple de URL.
Si su cadena se llama s
entonces
var id = s.match(/img_id=([^&]+)/)[1]
te lo dará.
Un trazador de líneas:
location.search.replace(''?'','''').split(''&'').reduce(function(s,c){var t=c.split(''='');s[t[0]]=t[1];return s;},{})
lo obtuve de google, intenta usar este método
function getQuerystring2(key, default_)
{
if (default_==null)
{
default_="";
}
var search = unescape(location.search);
if (search == "")
{
return default_;
}
search = search.substr(1);
var params = search.split("&");
for (var i = 0; i < params.length; i++)
{
var pairs = params[i].split("=");
if(pairs[0] == key)
{
return pairs[1];
}
}
return default_;
}
function parse_url(str, component) {
// discuss at: http://phpjs.org/functions/parse_url/
// original by: Steven Levithan (http://blog.stevenlevithan.com)
// reimplemented by: Brett Zamir (http://brett-zamir.me)
// input by: Lorenzo Pisani
// input by: Tony
// improved by: Brett Zamir (http://brett-zamir.me)
// note: original by http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
// note: blog post at http://blog.stevenlevithan.com/archives/parseuri
// note: demo at http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
// note: Does not replace invalid characters with ''_'' as in PHP, nor does it return false with
// note: a seriously malformed URL.
// note: Besides function name, is essentially the same as parseUri as well as our allowing
// note: an extra slash after the scheme/protocol (to allow file:/// as in PHP)
// example 1: parse_url(''http://username:password@hostname/path?arg=value#anchor'');
// returns 1: {scheme: ''http'', host: ''hostname'', user: ''username'', pass: ''password'', path: ''/path'', query: ''arg=value'', fragment: ''anchor''}
var query, key = [''source'', ''scheme'', ''authority'', ''userInfo'', ''user'', ''pass'', ''host'', ''port'',
''relative'', ''path'', ''directory'', ''file'', ''query'', ''fragment''
],
ini = (this.php_js && this.php_js.ini) || {},
mode = (ini[''phpjs.parse_url.mode''] &&
ini[''phpjs.parse_url.mode''].local_value) || ''php'',
parser = {
php: /^(?:([^://?#]+):)?(?:////()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^://?#]*)(?::(/d*))?))?()(?:(()(?:(?:[^?#//]*//)*)()(?:[^?#]*))(?:/?([^#]*))?(?:#(.*))?)/,
strict: /^(?:([^://?#]+):)?(?:////((?:(([^:@]*):?([^:@]*))?@)?([^://?#]*)(?::(/d*))?))?((((?:[^?#//]*//)*)([^?#]*))(?:/?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@//]*@)([^://?#.]+):)?(?://////?)?((?:(([^:@]*):?([^:@]*))?@)?([^://?#]*)(?::(/d*))?)(((//(?:[^?#](?![^?#//]*/.[^?#//.]+(?:[?#]|$)))*//?)?([^?#//]*))(?:/?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
};
var m = parser[mode].exec(str),
uri = {},
i = 14;
while (i--) {
if (m[i]) {
uri[key[i]] = m[i];
}
}
if (component) {
return uri[component.replace(''PHP_URL_'', '''')
.toLowerCase()];
}
if (mode !== ''php'') {
var name = (ini[''phpjs.parse_url.queryKey''] &&
ini[''phpjs.parse_url.queryKey''].local_value) || ''queryKey'';
parser = /(?:^|&)([^&=]*)=?([^&]*)/g;
uri[name] = {};
query = uri[key[12]] || '''';
query.replace(parser, function($0, $1, $2) {
if ($1) {
uri[name][$1] = $2;
}
});
}
delete uri.source;
return uri;
}
var url = window.location;
var urlAux = url.split(''='');
var img_id = urlAux[1]
Trabajó para mi. Pero la primera var debe ser var url = window.location.href