Reputation: 20409
Currently I use page numbers in hashes with Ben's Alman jquery-hashchange plugin:
$(document).ready(function(){
$(window).hashchange( function(){
var hash = (location.hash) ? location.hash.slice(1) : 'page1';
$.ajax({
url: '/list/' + hash, // result url like page1, page2 etc.
Now I need to add there one more value - filter
.
I think result hash URL can look like
#page1&filter=1-1-0
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)
How to parse that? I.e. how to understand if page
is defined, if filter
is defined (and what are the values - 1
, 1
and 0
- I need them separately)?
I was thinking about Ben's Alman BBQ plugin, but (1) it looks too complicated for such simple task, (2) not sure how to use parameters (page1, page2 etc.) without values.
Upvotes: 3
Views: 7406
Reputation: 2254
Very simple and unextediable parser for two hardcoded variables:
var hash_parts = location.hash.split('&', 2); //2 - limit, may be changed if more than two arguments
for(i in hash_parts) {
if(hash_parts[i].indexOf("page") === 0) { //begins with "page"
var current_page_number = hash_parts[i].substr(4);
}
else if(hash_parts[i].indexOf("filter") === 0) { //begins with "filter"
var filter = hash_parts[i].split('=', 2);
var filer_values = filter[1].split('-'); //filter_values == {'1', '1', '0'}
}
}
You can easily make it universal.
Please, also take a look here: Parse query string in JavaScript - just change window.location.search.substring(1)
to hash.
Upvotes: 5