I have a page that contains an HTML form that submits back to itself once the user clicks a link in a list of returned search results. Once they click the link, the page takes the submitted variables, runs a bunch of searches on various external APIs, parses a bunch of data, and adds a bunch of stuff to the database, then redirects to a new page that has been created from that data.
All the searching and parsing can take up to six or seven seconds; I’d like to be able to show the user a “Please Wait” kind of message while all that work is happening behind the scenes.
Trouble is, I can’t show and hide a DIV because it will screw up my PHP redirect if I’ve already generated output before the
header('Location: ' . $newURL);
command. I’ve searched around for answers but while there are many that are similar, none of them are close enough to my specific situation that I can hack around them.
I’d be grateful if someone could point me in the right direction.
Updated version which now works, courtesy @Izkata from his comments below:
jQuery("a").bind('click', function() {
jQuery('#feedback')[0].innerHTML = 'Searching, please wait...';
})
Turned out what I needed to do was assign bind a the message to the click of a link, not to ‘submit’, as submit was looking for form data.
The simplest way I can think of doesn’t require the server to do anything:
(Event is written using Prototype.js; you should use whatever is appropriate (JQuery/mootools/etc))
Using the example page in the comments, this works – it runs in Firebug, so just putting it on your page somewhere should work just fine.:
There’s probably a jQuery-way to update the text instead of using innerHTML, but I don’t know it – we don’t use jQuery here.