37

長いクエリ文字列が添付された URL があります。ページが読み込まれた後、クエリ文字列は必要ありません。そのため、ページをリロードせずにアドレス バーからクエリ文字列を削除したいと考えています。

私は試しparent.location.hash = '';てみましたwindow.location.href = '/#'

彼らは違いを生みませんでした。

4

9 に答える 9

20

これは、 history apiを使用する最新のブラウザーで実現できますが、おそらく問題に対する最善の解決策ではありません。

history.replaceState({}, 'some title', '/');

HTML ドキュメントを直接返すのではなく、データを処理してからホームページにリダイレクトするほうがよいようです。

URL を残しておきたくないので、ブックマークには役に立たないので、POST リクエストを作成した方がよいでしょう。

これは、 POST-Redirect-GET パターンを使用する必要があることを示唆しています。

于 2012-05-22T11:19:28.187 に答える
9

ページをリロードせずにそれを行うことはできません。ブラウザーのアドレス バーに必要なものを何でも入力できるとしたらどうでしょうか。セキュリティの楽しみ:)

新しい履歴 APIを使用して HTML5 (それをサポートするブラウザーでのみ動作します) で実行できるようになりました、現実的には、シナリオを含めるのではなく、書き直すことをお勧めします (ナッツを割るには大槌のようです)。

ページの読み込み後にクエリ文字列は必要ないとおっしゃったように、実際にはポストバックして、処理が完了した後に別の URL にリダイレクトする必要があります。

于 2012-05-22T11:17:38.780 に答える
3

使用するhistory.replaceState({}, "Title", "page.html");

の同じ構文pushState。ただし、IE にそれを理解させる方法を見つける必要があります。

より良い方法は、Apachemod_rewriteモジュールを使用することです。使い方はとても簡単です。

于 2012-05-22T11:19:47.183 に答える
0

更新されたコードが機能するようになりました

リンクを変更するページに以下のコードを追加するだけです。

// javascript function

   function buildLin(first) {
    var firs = first.toString()
       //alert(firs);
       //document.getElementById("team").value = "1";
           document.location.hash = "#" + firs.replace(/ /g, "_");
        //alert(document.location.hash);
    }

 //jQuery to call above function after page loads

  $(document).ready(function () {
      buildLin(2);
  });

ページにhttp://code.jquery.com/jquery-latest.jsを追加することを忘れない でください</p>

于 2012-05-22T11:47:41.957 に答える
-2

POSTの代わりにを使用すると、クエリ文字列を完全に回避できますGET

于 2012-05-22T11:20:24.240 に答える