Steffan Steffan - 1 month ago 8
Ajax Question

Ajax - maintaining state in the url - no #

I am working on an AJAX website where there are two search parameters. I did some mod-rewrite and checking for $_GET variables so that i can do something like..

site.com/var1/var2/ -> automatically do the search based on the parameters.

Now what I want is for people who do the search manually, to be able to have the url in that format. The only method that I've been able to find has to do w/modifying the url using..

location.hash = 'foo';

which would make it something like.. site.com/#var1

Which isn't as nice as the mod-rewrite. What I have found that works is if in my search function that does the ajax call i have this code

// avoid appending further variables if there are already variables
if(location.href == 'some absolute website path')
location.href = var1+'/'+var2+'/';


This will work, but basically forces the page load and then my auto search php/javascript will kick in due to the mod-rewrite. SO this works, however it involves an extra page refresh that I would rather avoid.

Any better solutions out there? Ideally if i was able to use location.href where it didn't cause the page to load once i change the value, but would just change in the url would be ideal (while maintaining my mod-rewrite links, w/out the # marks).

I am using jquery and php.

Answer Source

It's that way by design, there is no way yo change the url or path without causing a new request. Regards.