2015-01-04 12 views
7

"ページ1"と "ページ2"という2つのページがあります。 1ページ目には、値が「1」のテキストボックスがあります。 100と最後にボタンがあります。1つのhtmlページから別のページにJavaScriptを通して変数を渡す

ボタンを押すと、グローバル変数(?)にテキストボックスの値を保存し、2ページにジャンプします。 "window.onload"を使用して、2番目のJavascript関数で保存された値を警告しますページ1。ここで

は、私のJavascriptのコードは次のとおりです。 "ページ1" で

<script type="text/javascript"> 

var price; //declare outside the function = global variable ? 

function save_price(){ 

    alert("started_1"); //just for information 

    price = document.getElementById('the_id_of_the_textbox').value; 

    alert(price); //just for information   
} 

<script type="text/javascript"> 

function read_price(){ 

    alert("started_2"); 

    alert(price); 

} 

私はこのセンドボタンがあります。

<input class="button_send" id="button_send" type="submit" value="Submit_price" onclick="save_price();"/> 

それが始まりますJavascript関数とredi私を正しく私のページに導きます2。私は常にグローバル変数価格の「未定義」の値を取得

window.onload=read_price(); 

しかし、これでは、2ページ目をONT。

私はこれらのグローバル変数についてたくさん読んでいます。例えば。このページ:Problem with global variable..しかし、私はそれを働かせることができません...

これはなぜ機能していませんか?

+0

ブラウザでJavaScriptに「グローバル変数」がどのようなものか誤解しています。彼らはまだ彼らが設定されたページに結ばれている、彼らは他のページに存在しません。 – CBroe

+0

グローバル変数はページに対してのみグローバルです。たぶんurlパラメータを見てみましょうhttp://stackoverflow.com/questions/979975/how-to-get-the-value-from-url-parameter? – nha

+0

@CBroe(そしてnha)ありがとう!彼らはまだページに縛られていたことを知らなかった。 – Kronwied

答えて

15

コードを読まずにシナリオを読まないと、私はlocalStorageを使って解決します。 ここでは例として、prompt()を使用します。Page1の上

:PAGE2オン

window.onload = function() { 
    var getInput = prompt("Hey type something here: "); 
    localStorage.setItem("storageName",getInput); 
} 

window.onload = alert(localStorage.getItem("storageName")); 

あなたはまた、クッキーを使用することができますが、localStorageをはるかにスペースを使用できます、そしてあなたがページを要求したとき、彼らはサーバーに戻って送信されません。

+1

これは良い解決策ですが、この理由を説明していません。 OPはJSのグローバル変数を理解しません。 – ColBeseder

+0

@potasmicありがとう。本当に偉大で簡単な解決策。 :)私は(LiamBが言ったように)この解決策でいくつかの基本的なセキュリティを考慮する必要がありますか? – Kronwied

+0

@ColBeseder、Krownied:localStorageはドメイン単位です。他のサイトでは、他のソース(Google Analyticsなど)の他のスクリプトを含めない限り、localStorageにアクセスできません。 sessionStorageは、タブを閉じると終了します。クッキーの有効期限はlocalStorageよりも短くなります。しかし、データに機密情報が含まれている場合は、ブラウザーに保存する代わりにバックエンドの交換スキームに投資してください(クッキーのようにユーザーが表示、編集などできる) – potasmic

4

ここで最も良いオプションは、クエリ文字列を使用して値を送信することです。

how to get query string value using javascript

  • だから、1ページがpage2.htmlにリダイレクト?この場合は 'someValueの'

をsomeValueの= ABC

  • 2ページは、 は、クエリ文字列を読み取ることができ、具体的にキー学習の練習以外のものではありませんが、セキュリティの影響を考慮する必要があります。

    グローバル変数は、一度ページが再読み込みされると破棄されるため、ここで役立ちません。

  • 0

    あなたは、いくつかの異なるオプションがあります。

    • あなたのページがステートフルですのであなたは、SammyJS、またはAngularjsのようなSPAルータとUI-ルータを使用することができます。
    • あなたの状態を保存するためにsessionStorageを使用してください。
    • URLハッシュに値を格納します。
    +0

    の複製が可能です。 LiamBは非常に良い点を作ります。私の提案だけでなく、彼の提案も、クエリ文字列パラメータ、ハッシュパラメータ、localStorageデータを変更するか、その他の方法で値をアプリケーション外で変更できるというセキュリティ上の意味を持っています。データのバックエンドサービスでは、常に検証を行う必要があります。 – Martin

    関連する問題