6

我正在尝试使用java脚本重新加载页面页面重新加载但页面中的帖子数据未加载帖子数据被删除而页面重新加载任何人都可以帮助我

function currencychange(xxx) {
    setTimeout('delay()', 2000);
}
function delay(){
    location.reload();
}

这是我用来重新加载页面 onchange 的 javascript 代码

4

7 回答 7

7

window.location.reload()问题 a GET,所以是的,POST数据将丢失。

您可以发布帖子的唯一方法是:

  1. 使用 AJAX 发回数据,获取新页面,并用它替换您的正文元素,或者

  2. 在页面上创建一个表单元素,动作为 current window.location.href,然后将要发布的数据作为隐藏输入放入其中。然后,在货币兑换电话上form.submit()

于 2012-11-20T15:07:46.430 回答
1

这是 Chrome 中的一个已知错误。问题是当您通过 JavaScript 重新加载时,Chrome 不会执行 POST。如果您使用重新加载按钮执行此操作,它将正常运行并询问用户是否要重新发布数据。

所有详细信息都在这里: http ://code.google.com/p/chromium/issues/detail?id=6429 [编辑:相关错误] https://bugs.webkit.org/show_bug.cgi?id=23735

请为这个错误加注星号,以便更快地修复它。

于 2013-05-13T15:24:39.947 回答
1

我认为您需要重新发布而不是重新加载,如 HTTP POST 而不是 HTTP GET。

于 2012-11-20T15:07:45.697 回答
1

这是一个完整的 hack,但有必要并允许它与 Safari 一起使用。所以在页面的最后我将所有的帖子数据推送到一个会话中

$_SESSION['post'] = $_POST

然后我使用 jQuery 来更新会话变量。然后使用 location.reload(); 完成更改后重新加载页面,当页面加载时,我简单地将所有会话数据推回帖子中。

$_POST = £_SESSION['post'];

结果与提交表单一样。

于 2017-07-05T20:55:54.790 回答
0

location.reload不应该发布任何数据。如果您需要将数据发送回服务器,请考虑使用method='post'(如果有)提交表单,或使用 AJAX(例如jQuery.post

于 2012-11-20T15:08:07.400 回答
0

我以这种方式解决了这个问题:

// In the page called by POST, assuming coming from a search form 
// (i.e. searchResult.php)
$working=array();

if ($_POST) {
  if(!isset($_POST["postArray"]))  // Not set, first call
      $working = $_POST;
  else
     $working = unserialize($_POST["postArray"]); // recalled by someone else

  foreach ($working as $key => $value) { // Getting data
                $kv[] = "$key=$value";

// do something with input data....
           }

 echo '<form action="newRequest.php" method="post">'; 
// Your data here ......
 echo '<input type="hidden" name="currPost" value="' . htmlentities(serialize($working)) . '">';
 echo '<input type="submit" value="Go!">';
 echo '</form>';
 } // end if($_POST) ....


// This is the "newRequest.php" form
$postDataReceiver=array();
foreach ($_POST as $key => $value) { // Getting data from searchResult.php
           $kv[] = "$key=$value";

           switch($key) {
                // Your other stuff here ......
               case "currPost": // Here we are!
                    $postDataReceiver = unserialize($value);
                    break;


                 } // end switch
} // end foreach
echo '<form action="searchResult.php" method="post">'; 
// Your data here ......
 echo '<input type="hidden" name="postArray" value="' . htmlentities(serialize($postDataReceiver)) . '">';
 echo '<input type="submit" value="Go Back to search result!">';
 echo '</form>';

只是有点复杂,但它有效。希望这可以帮助!最好的,卢卡。

于 2016-07-25T13:48:21.903 回答
0

你可以试试这个:

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="form" id="form">

</form>

<script>
    // reload page every x miliseconds
    setInterval(function(){
    // inser here the post variables. Examples:

    var input = document.createElement('input');
    input.type = 'hidden';
    input.name = 'id';
    input.value = <?=$id?>;

    document.form.appendChild(input);

    var input2 = document.createElement('input');
    input2.type = 'hidden';
    input2.name = 'anotherid';
    input2.value = <?=$anotherid?>;

    document.form.appendChild(input2);

    // send form
    document.form.submit();
    }, 120000);
</script>
于 2017-10-24T16:29:17.740 回答