Query string kiolvasása JavaScriptből

Gyakran előfordul, hogy query stringben kell paramétereket cserélni ASP.NET és JavaScript között, ami egyrészt azért problémás, mert JavaScriptben nincs Request.QueryString gyűjtemény 🙂 másrészt mert az értékek az URL-ben kódolva is lehetnek.

JavaScriptben az alábbi segédfüggvénnyel kényelmesen ki lehet olvasni a megadott nevű URL paramétert. Ha nincs ilyen nevű kulcs az URL-ben, akkor a második paraméterként átadott default értéket adja vissza:

  function getQueryString(key, default_)
  {      
    if (default_==null) 
      default_="";      
    key = key.replace(/[[]/,"\[").replace(/[]]/,"\]");
    var regex = new RegExp("[\?&]"+key+"=([^&#]*)");
    var qs = regex.exec(window.location.href); 
    if(qs == null)
      return default_;
    else
      return qs[1];
  }

Bevallom, ezt nem én találtam ki (talán ezért működik jól), de sajnos a forrást már nem tudom megnevezni, régen akadtam rá a neten.

Azt az esetet azonban nem kezeli jól, amikor szerver oldalon Server.UrlEncode hívással kódolva kerül átadásra a paraméter. A tapasztalatok azt mutatják, hogy ilyenkor JavaScriptben egy decodeURIComponent hívás után már jó az érték. Valahogy így:

  var keyword = decodeURIComponent( getQueryString( 'k' ) );

Ti mit használtok?

Technorati-címkék: ,
Advertisements

One thought on “Query string kiolvasása JavaScriptből

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s