Arg.js gives you quick and easy access to parameters in the URL.
- Download your own copy
- Package manager: Nuget
- v1.0.1 - Ignores undefined/empty keys and values. Cleans up edge cases (i.e. where paths are present in parse() calls etc)
- v1 - Launch
The examples here assume this path:
page.html?name=Mat&address[0].city=London&address[0].country=UK&address[1].city=Boulder&address[1].country=US#?fromhash=true
Arg.get("name")
//= "Mat"
It will get the value from both the query segment, and the hash segment.
Arg.get("fromhash")
//= "true"
Arg.get("address")
//= [
// { city: "London", country: "UK" },
// { city: "Boulder", country: "US" }
// ]
Arg.get("address[0]")
//= { city: "London", country: "UK" }
Arg.get("address[0].city")
//= "London"
Arg.get("address[0].something", "Unknown")
//= "Unknown"
Arg.all()
//= {
// address: [
// { city: "London", country: "UK" },
// { city: "Boulder", country: "US" }
// ],
// fromhash: "true",
// name: "Mat"
// }
Arg.all()
gets all parameters (from the query and hash segments) in one object. Optionally, you can use thequery
orhash
methods to be specific.
Arg.query()
gets an object made up of all the values in the query segment of the URL. The query segment is everything following the initial ?
, but before the #
(if there is one.)
Arg.query()
//= {
// address: [
// { city: "London", country: "UK" },
// { city: "Boulder", country: "US" }
// ],
// name: "Mat"
// }
- Notice how the
fromhash
value is missing.
Arg.hash()
gets an object made up of all the values in the hash segment of the URL. The hash segment is anything following the #
.
Arg.hash()
//= {
// fromhash: "true"
// }
The Arg.url()
function builds a URL, and has a few overloaded versions.
Passing just an object will generate a URL based on the current location, just changing the parameters.
Arg.url({name: "Mat", company: "Stretchr"});
//= "path/to/current/page?name=Mat&company=Stretchr"
If you set Arg.urlUseHash = true
, then the parameters will be placed in the hash segment of the new URL following the #?
seperator:
Arg.urlUseHash = true;
Arg.url({name: "Mat", company: "Stretchr"});
//= "path/to/current/page#?name=Mat&company=Stretchr"
Being explicit about a path in the first argument will use that location instead.
Arg.url("http://www.stretchr.com/", {name: "Mat", company: "Stretchr"});
//= "http://www.stretchr.com/?name=Mat&company=Stretchr"
If you want to use query and hash paremeters, pass a path and two objects.
Arg.url("http://www.stretchr.com/", {name: "Mat", company: "Stretchr"}, {comment: 123});
//= "http://www.stretchr.com/?name=Mat&company=Stretchr#?comment=123";
The Arg.stringify
method lets you easily encode an object into a query string.
Arg.stringify({ name: "Mat" });
//= name=Mat
Arg.stringify({ one: { two: { three: 3 }}});
//= one.two.three=3
Arg.stringify({list:["one","two","three"]});
//= list[0]=one&list[1]=two&list[2]=three