Pregunta Analizar una URL en JavaScript


¿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.


74
2017-07-11 00:22


origen


Respuestas:


Puedes usar un truco para crear un a-elemento, agréguele la url y luego use su Objeto de ubicación.

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 podrías usar php.js para obtener el función parse_url en JavaScript.


Actualización (05-07-2012)

Yo recomendaría usar el excelente URI.js biblioteca si necesita hacer algo más que el manejo súper simple de URL.


117
2017-07-11 00:47



Si su cadena se llama s entonces

var id = s.match(/img_id=([^&]+)/)[1]

te lo dará.


33
2017-07-11 00:29



Prueba esto:

var url = window.location;
var urlAux = url.split('=');
var img_id = urlAux[1]

8
2017-07-11 00:30



Existente jQuery plugin existente Purl (un analizador de URL JavaScript).Esta utilidad se puede usar de dos maneras: con jQuery o sin ...


6
2018-02-14 20:48



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_; 
}

5
2017-07-11 00:39



Un trazador de líneas:

location.search.replace('?','').split('&').reduce(function(s,c){var t=c.split('=');s[t[0]]=t[1];return s;},{})

4
2018-03-31 08:13



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"

3
2018-01-05 15:55