RationalRabbit
asked on
Javascript Relocation with Query String or Global
I have a login script, instigated by a button in the header that calls up a form in a modal window which, on submit, processes using jQuery AJAX, On successful login, the script returns to the original page, where it calls up another modal window with utilities only available to the logged in user. I have tried using a query variable, and I have also tried using a global but, for some reason, both fail.
Code has been working fine to just log the user in and return to the page. The page name is held in a PHP variable:
In the AJAX result I have tried using the following to attach a query string.
When I could not get the query to work, (The string does not appear) I tried using a global variable:
The code that contains the opening of the logged-in user utility menu is contained in the footer of the page, so I did this when attempting to use the query string:
Process Order
(Header and Footer are includes that appear on every page - But not in the modal windows)
Code has been working fine to just log the user in and return to the page. The page name is held in a PHP variable:
$CurrentPage = empty($_REQUEST['CurrentPage']) ? $_SERVER['HTTP_REFERER'] : $_REQUEST['CurrentPage'];
In the AJAX result I have tried using the following to attach a query string.
<?PHP
echo('window.location.href = "'.$CurrentPage.'?ET=1";');
or
echo('window.location.search("'.$CurrentPage.'"+"?ET=1");');
echo('window.location.search("'.$CurrentPage.'?ET=1");');
?>
The page needs to reload in order to show the user is logged in in the header. When I could not get the query to work, (The string does not appear) I tried using a global variable:
<script>
window.ETSHOW = "Active";
<?PHP
echo('window.location.href = "'.$CurrentPage.'");');
?>
</script>
The code that contains the opening of the logged-in user utility menu is contained in the footer of the page, so I did this when attempting to use the query string:
<script>
<?PHP
if(!empty($_REQUEST[ET]))
{
// Run function to clear the URL, then
var hUrl = "etselect.php";
var hTitle = "Utilities";
var w = 630;
var h = 630;
LVPopup(hUrl,hTitle,w,h); // Opens the model window
}
?>
</script>
Attempting to use a global variable, I have done this:<script>
if(typeof window.ETSHOW !== 'undefined' && window.ETSHOW != null)
{
ETSHOW = null;
var hUrl = "etselect.php";
var hTitle = "ExpressTRAX";
var w = 630;
var h = 630;
LVPopup(hUrl,hTitle,w,h);
}
</script>
I've not used JavaScript globals much, but I do not understand why that is not working, and I am really puzzled that the query variable is not attaching to the URL.Process Order
(Header and Footer are includes that appear on every page - But not in the modal windows)
- User selects the Login button in the header. This opens a login form in a js modal window.
- Form submit uses Ajax to authenticate the login.
- On success, I need to reload the original page. This changes the Login button to a Logout and should instigate another modal window from js code contained in the Footer. This Modal contains a selection of utilities available to the user.
ASKER
There's a lot I haven't included here for brevity. The PHP code does some other functions, and should render long before the Ajax is called, so, from my perspective, shouldn't be a problem, but I am moving it out. Unexpected events have pulled me away. Will get back to you as soon as I am able to implement the changes. Obviously, there's something simple I'm completely missing.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, Julian!
Glad you sorted it out.
Why not simply send the page you want to go to back in the AJAX response and in the callback simply do
Open in new window
When you reload the page is re-rendered server side with all the logged on extras.
Your AJAX on login only handles the logon process and the redirect.