9

私たちはWebアプリケーションに取り組んでおり、完成間近ですが、気になることが1つあります(ただし、生産が停止することは決してありません)。

ページの1つ(index.html)を呼び出すとき、URL(searchid)で変数を渡さなければならない場合があります。したがって、のようなページが表示されますhttp://domain.com/index.html?searchid=string

理想的には表示しないようにしたいの?searchid=stringですが、どうすればよいかわかりません。

.htaccess私のグループはindex.htmlページを所有していません(ただし、所有しているグループと協力しています)。そのため、類似のものでどれだけのことができるかわかりません。

変数を作成することを考えてPOSTいましたが、HTMLとjQueryだけで変数を受け取る方法がわかりません。私のグループの別の人は、ページが読み込まれた後、URLから削除できると考えていましたが、ページを更新する必要があり、それによってデータが失われると思います。

問題がXでYについて尋ねるXY問題を回避しようとしているので、URLから変数を削除する正しい方法は何ですか?

4

4 に答える 4

16

History APIを使用できますが、最新のブラウザが必要です

history.replaceState({}, null, "/index.html");

これにより、ページをリロードせずにURLが/index.htmlとして表示されます

詳細はこちら:

ブラウザの履歴を操作しました

于 2012-11-30T17:51:54.457 に答える
3

あなたの質問は、ターゲットページがサーバーサイドスクリプトによって動かされておらず、動かされないことを示しているようです。その場合は、クエリ文字列をハッシュに変更することをお勧めします。これには、ページの読み込みをトリガーせずに直接編集できるという利点があります。

http://yourdomain.com/page.html#search=value

<script type='text/javascript'>
  // grab the raw "querystring"
  var query = document.location.hash.substring(1);

  // immediately change the hash
  document.location.hash = '';

  // parse it in some reasonable manner ... 
  var params = {};
  var parts = query.split(/&/);
  for (var i in parts) {
    var t = part[i].split(/=/);
    params[decodeURIComponent(t[0])] = decodeURIComponent(t[1]);
  }

  // and do whatever you need to with the parsed params
  doSearch(params.search);
</script>

ただし、ここでサーバー側のスクリプトを使用することをお勧めします

于 2012-11-30T18:06:50.697 に答える
0

JavaScriptの履歴APIを使用してURLを書き換えることができます。History.jsは、これを非常にうまく行うライブラリです。

そうは言っても、現在のクエリ文字列を無関係にするためにページのコンテンツを動的に変更しない限り、URLからクエリ文字列を削除する必要はないと思います。

于 2012-11-30T17:51:13.793 に答える
0

データを投稿してから、投稿されたデータをサーバーにページに含めることができます。例:

echo "<script> post_data = ".json_encode($_POST)." </script>";

これはクロスブラウザで動作します。

于 2012-11-30T17:54:01.777 に答える