2016-04-12 9 views
0

jsonオブジェクトを渡すために、このjavascriptコードを使用して子フォームを呼び出す親フォームがあります。javascriptにアクセスするwindow.myvariable子フォームのaspコードの背後に

 var w = window.open("childForm.aspx"); 
     w.myJsonObj = myJSONObject; 

この変数にchildForm.aspx onloadイベントでどのようにアクセスしてデシリアライズできますか?

+0

あなたがページに投稿する必要がありますどちらかあなたはおそらくそれを文字列化されたURLエンコードされたwindow.open()呼び出しのクエリ文字列パラメータとして追加することができます。 – ManoDestra

答えて

0

JavaScriptの変数は純粋にクライアント側であるため、コードビハインドからサーバー側にアクセスできません。サーバー側にアクセスするには、サーバーがアクセスできるどこかにその値を格納する必要があります。

多くのオプションがありますが、値を格納するための非表示フィールドを作成し、そのフィールドにidとrunat="server"属性(コードビハインドからアクセスできるように)を与え、JavaScriptを更新して値を設定します。

隠しフィールド:(jQueryのなし)

<asp:HiddenField id="SomeUniqueID" runat="server"/> 

Javascriptを:(jQueryを使って)

document.getElementById('<%= SomeUniqueID.ClientID %>').setAttribute("value", myJSONObject); 

Javascriptを:

$('#<%= SomeUniqueID.ClientID %>').val(myJSONObject); 
+0

さて、もしこの値を新しいページに渡したいのであれば、データを開いて処理するのはどのようにすればいいのですか?これは大規模なシリアル化されたカスタムオブジェクトであるため、私はurlパラメータを使用したくありません。ありがとうございました。 –

+0

クエリ文字列に渡したくない場合は、その値をセッションに格納できます。だから、値を取得するページのコードの後ろに、次のようにセッションに保存します: 'Session [" someVariableName "] = SomeUniqueID.Value;'。次に、その値を使用する必要があるページで、セッションから戻って読んでください。 'var jsonString = Session [" someVariableName "]を文字列として'。 – TheRotag

関連する問題