URL encoding and back-button issue in CanJS


#1

Hi Team
I am working on an application in which we are using CanJS 1.1. Because of some restrictions, we cannot upgrade our CanJS version.

we have set our URL format like “www.example.abc#!load/view/pid=123/false” and below is the routing function for this URL

“load/:type/:data/:isConfig route”: function(params) {


//load my target page…

}

But we are facing an issue. Suppose I am on page “example.abc” and I click on this link of my page (“www.example.abc#!load/view/pid=123/false”).
It redirects to my target page, but my URL changes to “example.abc#!load/view/pid%3D123/false”. My URL gets encoded.
Now if I want to go back to my previous page, it takes 2 clicks of browser’s back button to do that.
First, it redirects me to “example.abc#!load/view/pid=123/false” then on next click it redirects me to my previous page “example.abc”

I don’t want this encoded URL and want to solve this problem of back-button, please help me with any solution.

Any help would be appreciated


#2

could you write out the url as encoded?


#3

No, thats our requirement. We have to write our URL in this ("example.abc#!load/view/pid=123/false”) format only.


#4

Here’s is where CanJS 1.1 serializes data into a url:

There is a encodeURIComponent … you could try removing that, or at least avoiding it for =.


#5

It works fine for first time, but when we reload the page, it changes the URL to “example.abc#!&load%2Fview%2Fpid=123%2Ffalse”.

Thus, browser doesn’t find any route for this url and it is redirected to home page.