Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在子窗体的asp代码隐藏中访问javascript window.myvariable_Javascript_Asp.net_Json - Fatal编程技术网

在子窗体的asp代码隐藏中访问javascript window.myvariable

在子窗体的asp代码隐藏中访问javascript window.myvariable,javascript,asp.net,json,Javascript,Asp.net,Json,我有一个父窗体,它使用javascript代码调用子窗体来传递json对象 var w = window.open("childForm.aspx"); w.myJsonObj = myJSONObject; 如何在childForm.aspx onload事件中访问此变量,以便进行反序列化?Javascript变量纯粹是客户端变量,因此无法从服务器端(代码隐藏)访问它们。要在服务器端访问it,必须将该值存储在服务器可以访问它的位置 有很多选择,但这里有一个:创

我有一个父窗体,它使用javascript代码调用子窗体来传递json对象

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

如何在childForm.aspx onload事件中访问此变量,以便进行反序列化?

Javascript变量纯粹是客户端变量,因此无法从服务器端(代码隐藏)访问它们。要在服务器端访问it,必须将该值存储在服务器可以访问它的位置

有很多选择,但这里有一个:创建一个隐藏字段来存储其中的值,给该字段一个id和
runat=“server”
属性(这样就可以从代码隐藏中访问),并更新javascript来填充它

隐藏字段:

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

Javascript(不带JQuery):

document.getElementById(“”).setAttribute(“值”,myJSONObject);
Javascript(使用JQuery):

$('#').val(myJSONObject);

您必须将其发布到相关页面,或者您可以将其作为查询字符串参数附加到您的窗口中。open()调用,字符串化和URL编码。好的,如果我想将此值传递到打开并处理数据的新页面,那么最好的方法是什么?我不想使用url参数,因为这是一个大型序列化自定义对象。谢谢。如果您不想在查询字符串中传递它,那么可以在会话中存储该值。因此,在获取值的页面上的代码隐藏中,将其保存到session,如下所示:
session[“someVariableName”]=SomeUniqueID.value。然后在需要使用该值的页面上,从会话中将其读回:
var jsonString=session[“someVariableName”]作为字符串
document.getElementById('<%= SomeUniqueID.ClientID %>').setAttribute("value", myJSONObject);
$('#<%= SomeUniqueID.ClientID %>').val(myJSONObject);