example1.html
とexample2.html
の2つのHTMLページがあります。
クエリ文字列を使用してexample1.html
からexample2.html
に変数を渡し、サーバーサイドコードを使用せずにexample2.html
でその変数を取得するにはどうすればよいですか?
Example1.htmlの場合:
<a href='example2.html?myVar1=42'>a link</a>
<a href='example2.html?myVar1=43'>another link</a>
または、必要に応じてJavascriptを使用してリンクを生成します。どういうわけか、?varName = valueがexample2.htmlの最後にあることを確認してください。
次に、example2.htmlで、Javascriptを使用してexample2に付属のクエリ文字列を解析します。
これを行うには、Querystringを試すことができます。
// Adapted from examples on the Querystring homepage.
var qs = new Querystring();
var v1 = qs.get("myVar1");
または、parent.document.URLに、表示しているページの完全なURIが含まれています。あなたはそれを抽出することができます:
parent.document.URL.substring(parent.document.URL.indexOf('?'), parent.document.URL.length);
手動で解析して、エンコードした変数をURIにプルします。
編集:「新しいQuerystring()」の「新しい」部分を忘れました。おっと...
HTML/HTTPはステートレスです。つまり、前のページで行ったこと/見たことは、現在のページとは完全に切り離されています。質問は、フロントエンドの2つのページ間で変数を渡す方法です。 (HTTPはステートレスであるため、ページをロードするたびに、JavaScriptで設定したものの初期値が使用されます。JSでグローバル変数を設定して、ページを再度ロードした後もその値をそのままにすることはできません。
JavaScriptを使用してロード時に値を初期化できるように、値を別の場所に保存する方法はいくつかあります)
1)-任意のブラウザ(Cookie、セッションストレージ、ローカルストレージ-セキュリティ上の理由から1つのドメイン全体で利用可能->このストレージにデータを保存できるのは1つのドメインのみ、別のドメインは可能)を備えたフロントエンドストレージを使用するだけです。 tこのデータにアクセスします)、1つのページに値を入力し、他のページに値を取得します。それを考慮して:
Cookieは、ユーザーが決定した時間までデータを保存します。
Session Storageは、ブラウザのデフォルトタブが閉じるまでデータを保存します。
ローカルストレージは、ブラウザが完全に閉じてタブ(ページ)間でデータを共有するまでデータを保存します。有効期限なしでデータを保存し、JavaScriptまたはブラウザキャッシュ/ローカルに保存されたデータをクリアすることによってのみクリアされます-Cookieの有効期限とは異なります。
2)–Ajaxレンダリング関数を介して生成された要素に属性を追加します
<a href='example2.html?action=getAll&element=product&id=1'>a link</a>
<a href='example2.html?action=getAll&element=product&id=2'>another link</a>
->そしてこの要素をクリックした後、「URL /? action = getAll&element = product&id = 1 "そして、アクションがなくなる2番目のページで、このURLを解析し、適切なパラメーターを使用して適切なAjaxを呼び出すことができます。
Cookieとクエリ文字列を使用して値を交換できます。