Ace
Ace

Reputation: 489

Setting a variable with URL

I have deployed a firebase site which works fine. The problem I have is the next: Inside my main.js I have a variable called company. Is there a way to set that variable depending on the URL? For example:

site-ce207.firebaseapp.com/company=01

Or do you know another way?

Upvotes: 0

Views: 57

Answers (2)

neavilag
neavilag

Reputation: 609

I have a simple function I found a long time ago to handle this. I modified a bit to get the value by doing this.

function param(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

and then to use the value I do the following

var myCity = param('cityid');

when issuing something like: http://example.com/?cityid=Guatemala

myCity will have the value of 'Guatemala' in my app.

Upvotes: 0

Jonas Wilms
Jonas Wilms

Reputation: 138457

As Mouser pointed out, this is invalid:

site-ce207.firebaseapp.com/company=01

However, this isnt:

site-ce207.firebaseapp.com#company=01&id=5

And it can be easily parsed:

var queries=location.hash.slice(1).split("&").map(el=>el.split("="));

Queries now.looks like this:

[
["company","01"],
["id","5"]
]

So to resolve it may do use an object:

var getQuery={};
queries.forEach(query=>getQuery[query[0]]=query[1]);

So now its easy to get a certain key:

console.log(getQuery["company"]);

Or new and more easy using a Map:

var query=new Map(queries);
console.log(query.get("company"));

Upvotes: 3

Related Questions