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!
tinklerbAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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.
OWASP: Forgery and Phishing

Learn the techniques to avoid forgery and phishing attacks and the types of attacks an application or network may face.

manavsiCommented:
try using xAjax... for PHP

xAjax: http://xajaxproject.org/
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
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?
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.