6

Javaスクリプトを使用してページをリロードしようとしていますが、ページがリロードされますが、ページの投稿データがロードされていません。ページのリロード中に投稿データが削除されます。

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

これは、変更時にページをリロードするために使用しているjavascriptコードです

4

7 に答える 7

7

window.location.reload()を発行するGETので、はい、POSTデータは失われます。

投稿を発行できる唯一の方法は次のいずれかです。

  1. AJAXを使用してデータをポストバックし、新しいページを取得して、body要素をそれに置き換えます。

  2. アクションが現在のページにフォーム要素を作成し、window.location.href投稿するデータを非表示の入力としてページ内に配置します。次に、通貨変更の呼び出しでform.submit()

于 2012-11-20T15:07:46.430 に答える
1

HTTPGETではなくHTTPPOSTのように、再ロードではなく再POSTする必要があると思います。

于 2012-11-20T15:07:45.697 に答える
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

これは完全なハックでしたが、必要であり、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 に答える