Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Adobe Summit is happening now. Discover what's next in customer experience.
SOLVED

Launch Bug: Query Parameter doesn\'t work with hashtag URL`S

Avatar

Level 1

When we access a url with a hashtag (https://mysite.com/#/?s_cid=test) the value "test" isn't setting on data elements or campaign configuration in adobe launch.

Example:

________________

Do you know why this is happening? Is there any configuration we are supposed to make to get URL parameters in single pages application?

1 Accepted Solution

Avatar

Correct answer by
Level 4

URL Structures have specific orders for this, and is the definition of a query-string and a hash.  For a query-string to truly exist in good URL format, it would need to be before the hash.  Once you hit the "#" symbol in URL structures, that denotes the start of the hash and you've already passed the position to have a query-string value (see below for ordering of URL parts).

From: URL - Wikipedia

URI_syntax_diagram.png

In your example: https://mysite.com/#/?s_cid=test

There is no query-string.

The Hash value is = " #/?s_cid=test "

To use a different example:  https://mysite.com/page.html?s_cid=test#value

Query-string = " ?s_cid=test "

Hash value = " #value "

In angular or react SPA's, it's common to run into this issue of 'expecting query-strings' to have a value when they do not.  Unfortunately, the only way to get at this information is to manually extract that substring yourself from the hash.

I would use a data element with custom code for getting this value if you need it:

1. First get the hash value:   window.location.hash

2. Do a check to see if it contains a question mark

3. Get the substring from the question mark onward

4. Return that value

5. (from 2 if false). If the hash does not have a question mark, return an empty string

Of course, rule #1 is try to use proper URL formatting whenever possible, so if you can put the query-string before the hash - do it.  The browser would then know it's a query-string also.

Hopefully this helps clear it up!

View solution in original post

1 Reply

Avatar

Correct answer by
Level 4

URL Structures have specific orders for this, and is the definition of a query-string and a hash.  For a query-string to truly exist in good URL format, it would need to be before the hash.  Once you hit the "#" symbol in URL structures, that denotes the start of the hash and you've already passed the position to have a query-string value (see below for ordering of URL parts).

From: URL - Wikipedia

URI_syntax_diagram.png

In your example: https://mysite.com/#/?s_cid=test

There is no query-string.

The Hash value is = " #/?s_cid=test "

To use a different example:  https://mysite.com/page.html?s_cid=test#value

Query-string = " ?s_cid=test "

Hash value = " #value "

In angular or react SPA's, it's common to run into this issue of 'expecting query-strings' to have a value when they do not.  Unfortunately, the only way to get at this information is to manually extract that substring yourself from the hash.

I would use a data element with custom code for getting this value if you need it:

1. First get the hash value:   window.location.hash

2. Do a check to see if it contains a question mark

3. Get the substring from the question mark onward

4. Return that value

5. (from 2 if false). If the hash does not have a question mark, return an empty string

Of course, rule #1 is try to use proper URL formatting whenever possible, so if you can put the query-string before the hash - do it.  The browser would then know it's a query-string also.

Hopefully this helps clear it up!