0

javascriptにクライアントグローバル変数があります。別のページにあるサーバー側からこのグローバル変数にアクセスする必要があります。クエリ文字列なしでこれを実現するにはどうすればよいですか?セッション状態が必要な場合、JavaScriptからセッションを設定するにはどうすればよいですか?

編集済み

わかりました。これが完全なシナリオです。ページ自体はSharePointWebページであり、Webパーツのみを制御できます。Webパーツ内に、window.openを実行して別のページを開くボタンがあります。では、メインページから他のページにjavascript変数を渡して、コードビハインドでアクセスできるようにするにはどうすればよいですか?

4

3 に答える 3

0

セッションはサーバー側のデータストアです。クッキーを使ってみてください。

于 2012-04-27T05:30:21.350 に答える
0

私はそれを行うためのいくつかの方法を考えることができますが、私はあなたにこれをお勧めします。基本的な手順は次のとおりです。

  1. JavaScriptを使用して、(クエリ文字列ではなく)引数として渡すグローバル変数を使用してモーダルダイアログを単独でポップアップします。

  2. ポップアップページで、JavaScriptを使用してグローバル変数を非表示フィールドに設定してから、それ自体へのポストバックを開始します。

  3. コードビハインドで、非表示フィールドからグローバル変数を取得し、セッションデータに格納します。

  4. これで、グローバル変数がセッションスペースで使用できるようになりました。

注:jQuery1.7.1以降が必要です。

ステップ1コード:

これはポップアップリンクまたはボタンです。

<a id="popAspxWeb" href="#" onclick="javascript:PopPage('ModalPopup.aspx','galbal_variable_data');">Click to Popup</a>

ポップアップウィンドウを開くためのJavaScriptコードは次のとおりです。

<script type="text/javascript">
    function PopPage(page, data) {
        var result = window.showModalDialog(
        page, // popup this page
        data, // with this data
        "dialogWidth:500px; dialogHeight:500px; resizable:no; status:no; center:yes");
    }
</script>

ステップ2コード:

これらが必要になります。1つ目はデータを保存するために渡され、2つ目はページのポストバックにフラグを立てるかどうかを示します。

<input id="hidData" runat="server" type="hidden" />
<input id="postback" runat="server" type="hidden" value="false" />

これがjavascriptです:

<script type="text/javascript">
    var data = ""; // global variable to store data from parent window.

    $(document).ready(function() { //jQuery code to be executed when document is fully loaded.
        args = window.dialogArguments; // obtain argument data and assign to global variable.
        if ($("#postback").val().toString() == "false") { // if first visit to page
            $("#hidData").val(data); // assign argument data from global variable to hidden field.
            $("#postback").val("true"); // flag the form is posted back.
            document.forms[0].submit(); // trigger form post.
        }
    });

    function ReturnAndClose() { // you can optionally return data back to the parent window.
        window.close(); // this closes modal pop up.
        window.returnValue = document.getElementById('return_data').value; // this returns a value to parent window.
    }

</script>

ステップ3コード:

ガルボル変数データにアクセスするためのコードbehine。

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        string data = this.hidData.Value;
        this.Session["data"] = data;
    }
}
于 2012-04-27T15:46:26.227 に答える
-1

いいえ、JavaScriptから直接セッションにアクセスすることはできません。javascriptがクライアントで実行されている間、サーバーに保存されます。ただし、間接的に行うことができます。以下のリンクの回答を参照してください。

さまざまなアプローチを使用して前のページから値を取得する

上記のリンクのポイント4を確認してください。

私は説明しました:クロスページポストバック、コントロールのPostBackURLプロパティを追加します

それがあなたの編集に従ってあなたの目的に役立つことを願っています。

于 2012-04-27T05:44:28.767 に答える