You are here: Re: Form fields don't persist after window.open, form submit, browser back « PHP Programming Language « IT news, forums, messages
Re: Form fields don't persist after window.open, form submit, browser back

Posted by Scott on 03/21/06 22:17

On Tue, 2006-03-21 at 11:40 -0800, jwlum@alum.mit.edu wrote:
> I have the following problem under Internet Explorer only:
>
> 1. User fills out form data (myform.php) and clicks a button that fires
> myFunction()
> 2. myFunction() spawns a "hello, world" popup page via window.open
> 3. myFunction() submits the main page's form via document.form.submit()
> 5. User closes popup window and clicks browser's Back button to return
> to form entry page
> 6. All the form data that the user had filled out is now blank (back to
> defaults)!
>
> If you take step 2) out of the equation, then the form data that the
> user submitted is still there in step 6). This is the behavior I want,
> and I am mystified as to why the addition of window.open causes a
> difference under IE. What could be going on here? If it were a
> cache-related issue, I wouldn't expect step 2) to have any bearing on
> the situation.
>
> Below is a single PHP file you can save to see the problem for
> yourself. As an aside, the same thing happens if you write the
> equivalent logic in perl, but in a straight HTML/javascript version,
> there is no problem.
>
> Thanks for any pointers,
> John
>
> ----------
>
> <html>
> <title>PHP Version</title>
> <body>
> <?php
> if ($_REQUEST['Phase'] == 'Summary')
> {
> ?>
> <p><b>Form Submitted</b></p>
> <p>This is the post-submit version of the form...</p>
> <?php
> }
> else
> {
> ?>
> <script language="javascript">
> function submitForm()
> {
> if (document.form1.popup[0].checked)
> {
> var popup = window.open('', 'popup', 'width=200,height=200')
> popup.document.write('<html><body><p><b>PHP version:</b><br>Close
> me, then use browser Back button and notice that your form fields are
> empty!</p></body></html>');
> }
> document.form1.submit();
> }
> </script>
> <p>This is the pre-submit version of the form...</p>
> <form name="form1" action="" method="get">
> Text 1: <input type="text" size="12" name="text1"><br>
> <input type="radio" name="popup" value="show"> Open Popup
> Window<br>
> <input type="radio" name="popup" value="noshow" CHECKED> No
> Popup<br>
> <input type="button" name="Submit" value="Submit"
> onclick="submitForm();">
> <input type="hidden" name="Phase" value="Summary">
> </form>
> <?php
> }
> ?>
> </body>
> </html>
>

I would categorize this as a browser issue, rather than a PHP problem.
Nonetheless, a possible workaround may be to save the submitted form
data in session variables, and refill the form using the session data.

You should still prevent caching of the original page for this to work,
however. Microsoft recommends using the Expires header (header('Expires:
-1'); or <META HTTP-EQUIV="Expires" CONTENT="-1">).

http://support.microsoft.com/kb/q234067/

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация