Arg.js gives you quick and easy access to parameters in the URL.
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 thequeryorhashmethods 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
fromhashvalue 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