背景:
在静态页面a.htm实现登陆功能.
自己思路:
使用javaScript获取用户名和密码存到Cookie中,然后跳转到b.aspx中进行登陆验证,登陆成功再跳转回a.htm。如何读取Cookie已经解决。但是对如何传到b.aspx.cs中迷惑不已,目前我想到的办法很蠢,就是利用两个隐藏的文本框做中转来取值:
<BODY onload="GetCookie()">
其中GetCookie这个js 函数的作用是给文本框赋值。同时我在
private void Page_Load(object sender, System.EventArgs e)
{
string userName=this.txtUserName.Value;
string pWd=txtPWd.Value;
}
估计各位高手看到这里就知道问题了。问题1:
因为我获取userName和pWd的代码放在page_Load里,所以实际上他比<BODY onload="GetCookie()">
先运行。。 导致我取得的值为"",这个问题如何解决。不想用button之类再去点击。问题2:
asp.net里面可不可以笔直取得javaScript里的参数值?不利用隐藏域中转。就是类似:
function a()
{
var x=20
return x;
}然后在asp.net 里笔直获取x的值。如果有方法的话,如果在.aspx.cs利用.js文件中的javaScript函数
类似attribute.add()已经知道了。 现在要笔直调用的方法。问题3:
javaScript可不可以不利用Cookie来在页面间传值。还有其它什么好方法没?
或者除了javaScript外还有什么好方法可以在静态页面和aspx间传值。麻烦诸位高手相助,自己研究以久困惑不已中。

解决方案 »

  1.   

    对了。。用的是 .net 2003
      

  2.   

    <script language="javascript">
    var username;
    var userpass;
    var iBool;
    function GetParam()
    {
    username=document.all.userName.value;
    userpass=document.all.passWord.value;
    }function GoBbs()
    { GetParam();
    window.open("dvbbs/login.asp?action=chk&username="+ username +"&password="+userpass);

    }
    </script>引用的时候:<a href="#" onclick="javascript:GoBbs();">
      

  3.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    string userName=this.txtUserName.Value;
    string pWd=txtPWd.Value;
    }
    这个里面可以直接取得cookie值,同一网站下的cookie是共享的,也就是没有语言的限制
      

  4.   

    你模仿登录按钮的onclick事件,我是说生成后的html中的
      

  5.   

    你可以在Page_Load里面真接取Cookie啊。为什么要弄那么麻烦?
     if (Request.Cookies["useid"] != null)
                        this.txt_user.Text = Request.Cookies["useid"].Value.ToString();
      

  6.   

    在CS文件中这样获取:Request.Cookies["userName"];不可以吗?
      

  7.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    string userName=Request.Cookies["userName"].Value.ToString();
    string pWd=Request.Cookies["passWord"].Value.ToString();
    }我实验了一下,这样直接获得就可以了
      

  8.   

    在cs中似乎是不能获取js中的cookie的。。
    我试了一下 结果发现不行。,。
      

  9.   

    function CmtLogin()
    {
    var userName=document.newsform.txtUserName.value;
    var PWd=document.newsform.txtPWd.value;
    document.cookie="userName="+userName;
    document.cookie="PWd="+PWd;
    alert(document.cookie);
    self.location.href="http://192.168.1.161/news/Control/CheckLogin.aspx";
    }因为cookie我是在静态页面上用javaScript读取的
      

  10.   

    junzhang4008(不会飞的猪) 
    谢谢你的回答  
    在仅仅传替参数很短时这样是可行的
    但是如果我在那个页面还要传一段很长的字符串时 似乎就不能用?的形式传过去了。。
    因为地址栏是有限的。。
      

  11.   

    能否麻烦写一下如何读取如下Cookie:
    function CmtLogin()
    {
    var userName=document.newsform.txtUserName.value;
    var PWd=document.newsform.txtPWd.value;
    document.cookie="userName="+userName;
    document.cookie="PWd="+PWd;
    alert(document.cookie);
    self.location.href="http://192.168.1.161/news/Control/CheckLogin.aspx";
    }
      

  12.   

    COOKIE确实是共享的。。 多谢了。。
    请问下我在javascript里赋值时要注意什么才能使asp.net里读取的更方便。。
      

  13.   

    self.location.href="http://192.168.1.161/news/Control/CheckLogin.aspx";着句可能有问题,你的IE的地址栏中也是192.168.1.161来运行的吗?如果是localhost的是不可以取到的这个document.cookie="userName="+userName;也有问题
    =>
    document.cookie = "userName" + "="+ escape(userName);.cs中取:string userName=Request.Cookies["userName"].Value.ToString();