开发者

Is possible to get the previous form POST variable using javascript?

开发者 https://www.devze.com 2023-03-29 14:08 出处:网络
Client goes to example.com/form.html where a html POST form is displayed Client fills the form with specific information and submit it to example.com/form.html
  1. Client goes to example.com/form.html where a html POST form is displayed
  2. Client fills the form with specific information and submit it to example.com/form.html
  3. When example.开发者_JS百科com/form.html receives the POST request redirects the Client on example.com/redirected.html Is possible to retrieve the variables that the client filled and POSTed to example.com/form using javascript ? The javaScript being deployed on example.com/redirected.html only . I presume that can be some "back" controls iframes and ajax involved but I couldn't find a reliable solution yet.

    The operation will take place on the same domain so no cross domain issue is involved


Nope, I don't think this is possible.

You have to either

  • Store the posted value in a cookie
  • Store the posted value in a session variable on server side
  • Add the posted value as a GET parameter to the new URL
  • Use GET to post the original form, and painfully extract the posted value from document.referer on the new page


With HTML5, use localstorage. (The answer describes how to store object in localstorage- you could store an object of your form fields in there).

But you have to store the data on posting with js at example.com/form.html and then can get it on example.com/redirected.html. Without js at form.html, this is not possible with this method.

This works if you plan to use html5 and do not store too much data in it, iirc it has a limit of 5-10mb depending on the browser.


I don't think there is a way to do this by using plain html. With some server-side language (like PHP) it can be done with no problem.

I have been in a similar situation before, and the way I managed to give the data to JS is by including the data in a tag while preparing the output using PHP.

Assuming the redirected to php script receives the POST data from the script it's being redirected in. I would include this in the php code:

<?php
  echo '<script type="text/javascript">';
  echo 'var postData = '.json_encode($_POST).';';
  echo '</script>'
?>

This will have the javascript know what the POST values contained. To access the values from js:

//assuming you need the value for $_POST['foo']
var foo = postData.foo;
// or if json is encoded as just an associative array
var foo = postData['foo'];

If the POST data is not being passed to the redirected to script (haven't checked if this happens automatically), you could write the $_POST data in a $_SESSION variable, in the first php script:

<?php
  $_SESSION['postdata']=$_POST;
?>

and then get it back from SESSION from the redirected to script.

<?php
  $postdata = $_SESSION['postdata']; //use this to create the inline script in the html
  unset($_SESSION['postdata']; //empty this from the SESSION variables
?>
0

精彩评论

暂无评论...
验证码 换一张
取 消