長いクエリ文字列が添付された URL があります。ページが読み込まれた後、クエリ文字列は必要ありません。そのため、ページをリロードせずにアドレス バーからクエリ文字列を削除したいと考えています。
私は試しparent.location.hash = '';
てみましたwindow.location.href = '/#'
彼らは違いを生みませんでした。
長いクエリ文字列が添付された URL があります。ページが読み込まれた後、クエリ文字列は必要ありません。そのため、ページをリロードせずにアドレス バーからクエリ文字列を削除したいと考えています。
私は試しparent.location.hash = '';
てみましたwindow.location.href = '/#'
彼らは違いを生みませんでした。
これは、 history apiを使用する最新のブラウザーで実現できますが、おそらく問題に対する最善の解決策ではありません。
history.replaceState({}, 'some title', '/');
HTML ドキュメントを直接返すのではなく、データを処理してからホームページにリダイレクトするほうがよいようです。
URL を残しておきたくないので、ブックマークには役に立たないので、POST リクエストを作成した方がよいでしょう。
これは、 POST-Redirect-GET パターンを使用する必要があることを示唆しています。
ページをリロードせずにそれを行うことはできません。ブラウザーのアドレス バーに必要なものを何でも入力できるとしたらどうでしょうか。セキュリティの楽しみ:)
新しい履歴 APIを使用して HTML5 (それをサポートするブラウザーでのみ動作します) で実行できるようになりましたが、現実的には、シナリオを含めるのではなく、書き直すことをお勧めします (ナッツを割るには大槌のようです)。
ページの読み込み後にクエリ文字列は必要ないとおっしゃったように、実際にはポストバックして、処理が完了した後に別の URL にリダイレクトする必要があります。
使用するhistory.replaceState({}, "Title", "page.html");
の同じ構文pushState
。ただし、IE にそれを理解させる方法を見つける必要があります。
より良い方法は、Apachemod_rewrite
モジュールを使用することです。使い方はとても簡単です。
更新されたコードが機能するようになりました
リンクを変更するページに以下のコードを追加するだけです。
// 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>
POST
の代わりにを使用すると、クエリ文字列を完全に回避できますGET
。