在js里有这么一个变量
var str="sdsfsdf";
然后window.open("a.aspx");在a.aspx的page_load里怎么得到刚才的str值??要求
1 不用window.open("a.aspx?str="+str);这样的方法
2 不用document.cookie=.......这样写cookie的方法

解决方案 »

  1.   

    可以使用form里的hidden控件,然后使用javascript调用form.submit吧。
    客户端和服务器端传递信息的常用方式也就那么几种:cookie,url参数,form控件。
    除此之外,想让服务器端自动知道客户端某个javascript变量的值,那岂不成了“遥感”技术?
      

  2.   

    那就用
    var str="sdsfsdf";
    window.showModalDialog("a.aspx",str,"dialogHeight:301px;dialogWidth:434px;edge:Sunken;center:Yes;help:No;resizable:No; status:No");在a.aspx页面里
    <script language=javasriprt>
    alert(window.dialogArguments[0]);
    </script>
      

  3.   

    在打开页面里放一个hidden控件了,hidden的value是“sdsfsdf”,id为“hide”
    window.open("a.aspx");在a.aspx页面里,
    <script language=javasriprt>
    alert(alert(window.opener.document.formname.hide.value);
    </script>
      

  4.   

    可我要在在a.aspx的page_load里得到这个值啊
      

  5.   

    应该可以采用 hidden 控件方法,在 page_load 里可以通过 request.form("hide") 获得!
      

  6.   

    放到hidden控件在page_load中用request取得hidden控件的值。
    string hiddenValue = Request.Form1("hiddenID");
      

  7.   

    用window.open("a.aspx")是没法用page_load来得到值的,用hidden控件,提交后服务器端得到
      

  8.   

    如果这么简单我就不问了!!!因为我是用的客户端button,在他的onclick里的事件里window.open一个新窗口,我这么做的目的就是为了父页面不刷新,大家也知道window.open是客户端打开的IE的试问,这样的话
    放到hidden控件在page_load中用request取得hidden控件的值。
    string hiddenValue = Request.Form1("hiddenID");
    行吗?
    肯定的不行。
    用opener.document.element.label 的方式呢?一样的不行
    原因很简单,因为我这个button并没有执行服务器往返,如果执行往返了,父页面就刷新了,这不是我想要的!!!!!楼上的全部误解了我的意思
      

  9.   

    没有服务器往返的话哪有什么“Page_Load”?
      

  10.   

    只有用opener来获取。
    如果不想使用上面两种办法的话。
      

  11.   

    function aa()
    {
    var objSrvHTTP;
    var objXMLDocument;
    objSrvHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    objXMLDocument = new ActiveXObject("MSXML.DOMDocument"); objXMLDocument.async= false;
    objXMLDocument.loadXML("<msg><id>sdsfsdf</id></msg>"); objSrvHTTP.open ("POST","a.aspx",false);
    objSrvHTTP.send (objXMLDocument); window.open("a.aspx");
    }
      

  12.   

    protected System.Web.UI.WebControls.TextBox TextBox1;
    XmlDocument input = new XmlDocument();

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面 if (this.Request.InputStream != null && this.Request.InputStream.Length != 0)
    {
    input.Load(this.Request.InputStream);
    Application.Add("input",input.InnerXml);
    }
    this.TextBox1.Text = Application["input"].ToString();
      

  13.   

    ok了~~
    1 不用window.open("a.aspx?str="+str);这样的方法
    2 不用document.cookie=.......这样写cookie的方法
      

  14.   

    回复人: steedhorse(晨星) ( ) 信誉:100  2005-04-15 15:31:00  得分: 0  
     
     
       没有服务器往返的话哪有什么“Page_Load”?
      
     
    赞成,你那BUTTON不加runat=server 行吗?
      

  15.   

    可我要在在a.aspx的page_load里得到这个值啊
    ---------------
    这样的话,你肯定要用到传递参数的方法.
    var str="sdsfsdf";
    window.open("a.aspx?url=" + str);
      

  16.   

    脚本中的
    var str="sdsfsdf";
    是一个脚本对象。存在于当前页a.aspx是另外的一个页,你要想在另外一个也用这个变量是不可能的,只能用它的值,但是这个值服务器不会知道除非你在请求a.aspx把它作为一个参数传过去。
      

  17.   

    JavaScript是否有全局变量?有的话是不是可以访问?
    还有,两个IE窗口可以使用变量相互记忆,通过这个记忆变量就可以相互访问,这也不是可以解决吗?
      

  18.   

    用模式窗体吧 
    Window.ReturnValue = ‘数据值’;
      

  19.   

    楼上 Ivony() 是比较好的方法,open一个叫做a.htm的页面取得值,再传递给a.aspx。传递给窗口值不一定通过url的参数(get方法),还可以通过form的action参数并提交窗口(post方法)。既然打开新的窗口,为什么不让刷新父窗口。如果是子窗口总跑到打开smartnavigation参数的aspx父窗口后边,那是script脚本不够好。仅用一个open是不能保证打开的窗口显示在父窗口之前的。
      

  20.   


    1 不用window.open("a.aspx?str="+str);这样的方法
    ================估计是不想让用户看到传递的数据,项保密一下吧
    2 不用document.cookie=.......这样写cookie的方法===================可能是对ciikie不太放心
    看来对安全性倒是挺高的呵呵