Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1745
  • Last Modified:

PHP, AJAX, "Please wait", and a redirect

Folks,

I have page1.php  that loads and displays an animated gif image to entertain people while the order they have placed is being processed.

I know there has to be a way to get AJAX to fire off the execution of the processorder.php file that does all of the complex order processing and posts the user order.

The last thing I need to accomplish, is to make the page1.php page redirect to the next php opage when the ajax request is complet. So here's my questions:

1) If there are no form elements on this page, can I call the processorder.php using AJAX  in the <body> tag with an onload event?
2) Once it returns the results, I want he page to be immediately redirected to aother page. How can I do this, assuming that I can use the return from the AJAX call to indicate when it is complete.
3) Is it possible to remove the wait page (page1.php) from the browser's history so that the user does not hit the 'Back' button and start the process over inadvertently

I have seen a great example in asp.net at http://www.codeproject.com/KB/aspnet/wait_page.aspx but can't figure out how to recreate this in javascript and AJAX calls via PHP scripts.

Let me know if anyone needs more details. I've been reading web sites on how to get this done for 2 days, and a lot of them come close, but the redirect is the stumper...

Thanks!
0
tinklerb
Asked:
tinklerb
  • 3
  • 2
3 Solutions
 
Greg AlexanderLead DeveloperCommented:

function process_order(redirect_page)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null){
alert ("Browser does not support HTTP Request")
return
}
 
 
var url="processorder.php"
url=url+"?agetvariable="+agetvariable
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChangedVerify
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChangedVerify() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 } 
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

Open in new window

0
 
Greg AlexanderLead DeveloperCommented:

function process_order(redirect_page)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null){
alert ("Browser does not support HTTP Request")
return
}
 
 
var url="processorder.php"
url=url+"?agetvariable="+agetvariable
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 window.location="new_page_here.php";
 } 
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

Open in new window

0
 
Greg AlexanderLead DeveloperCommented:
The 2nd one above ought to get you started. basically this ajax request can be called from page one. It then sends a request to processorder.php, and when done, will redirect to another page. There are a couple of things that we will need to changed, but this will get us started.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
manavsiCommented:
try using xAjax... for PHP

xAjax: http://xajaxproject.org/
0
 
tinklerbAuthor Commented:
Folks,
Thanks for the suggestions. I have some time set aside this afternoon to try to put them into place, and will reply later today or forst thing tomorrow with the results. In the mean time, thanks for the help!
Brian
0
 
tinklerbAuthor Commented:
Folks,
I have successfully got points one and two to work based on the recommendations. Now on to the third point I had above.
3) Is it possible to remove the wait page (page1.php) from the browser's history so that the user does not hit the 'Back' button and start the process over inadvertently
Once this is solved, this screen can go into production. Any ideas?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now