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?