1

リロードごとにランダムな画像を表示するページがあります。このページは、数値が$ _GET(ユーザープロファイルを表す)を通過した場合にのみ表示されます。次のランダムな画像に移動するには、送信ボタンでページをリロードするだけです。しかし、私は2つの障害にぶつかっています。

  • PHPでこのheader関数を使用すると、悪名高い「すでに送信されたヘッダー」エラーが発生します。さらに、パラメータが渡されないため、ユーザーはリダイレクトされます。
  • Javascriptでは、location.reloadはページをリロードしますが、パラメーターが欠落しているため、同じ結果になります。

だから私の質問は、Javascriptでパラメータを使用してページをリロードすることが可能かどうかです。または、別の解決策を知っていますか?

編集:アラートボックスを使用していくつかのテストを実行すると、アドレスバーに表示されるURLが表示されます。パラメータが渡されない理由がわかりません。

4

5 に答える 5

2

なぜheaders already sentエラーが発生するのか疑問に思うはずです。通常、フローが正しくないことが原因です。PHP出力を生成する前に、必ず処理してください。コードの先頭で送信されたフォームを確認し、他に何も実行せずに安全にリダイレクトします。あなたの問題を解決する必要があります。

于 2011-06-07T10:44:41.777 に答える
2

別のトピックで私はそれを見つけました

window.location.replace(window.location.href)

パラメータを保持します。

于 2011-06-07T11:30:29.790 に答える
1

PHP でヘッダー関数を使用すると、悪名高い「headers already sent by」エラーが発生します。

これは簡単です。header( ) 呼び出しを実行するコードを先頭 (他の出力の前) に移動します。「Headers already sent」は悪名高いですが、信じられないほど簡単に解決できます。

Javascript では、location.reload によってページがリロードされますが、やはりパラメーターが欠落しているため、同じ結果になります。

じゃあ渡す?これはうまくいくはずですよね?

window.location( window.location.toString( ) );
于 2011-06-07T10:44:57.793 に答える
1

ページの代わりに、 GET を介して渡されたパラメーターを使用してページを同じページにリダイレクトするためにlocation.reload使用できます。document.location例えば、

<?php
    $id = $_GET['user_id'];
    echo "<script type='text/js'>
          document.location='".$_SERVER['PHP_SELF']."&id=".$id."';
          </script>";
?>
于 2011-06-07T11:46:53.293 に答える
0

わかりました。javascriptとPHPを介して何かを機能させるのは苦痛であり、ajaxで何かを機能させるのに十分な時間がないので、これを投稿したほうがよいでしょう。簡単な回避策は、フォームのaction属性でパラメーターを指定することです(特別なマークアップはsmartyからのものです)。

   <form Method="POST" ACTION="my_page.php?param={$smarty.get.i}">
          <!-- PHP: If ( isset($_POST['next']) ) do SQL ... -->
          <input type="submit" name="like" value="I like">
          <input type="submit" name="next" value="Next" >
   </form>
于 2011-06-07T11:54:08.673 に答える