日期:2014-05-17  浏览次数:20809 次

关于后台获取不到HiddenField值的问题
通过点击某个按钮,然后给HiddenField赋值,赋值之后将值传到后台 利用XMLHttpRequest 技术去实现局部刷新
JScript code

 function GetData(p) {
       
        document.getElementById("HiddenField1").value =data;//data为某个textbox我自己输的值,是变值

        document.getElementById("d").innerHTML = "正在读取数据……";
        h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
        h.open("GET", '<%=Request.FilePath %>?id=' + p.value, true);
        h.onreadystatechange = function () {
            if (h.readyState == 4) {
                if (h.status >= 200 && h.status < 300) {
                    document.getElementById("d").innerHTML = h.responseText;
                }
                else {
                    document.getElementById("d").innerHTML = "<h2>数据操作错误:</h2>" + h.responseText;
                }
            }
        }
        h.send(null);

    }



后台代码是:

C# code

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["id"] == "1")
        {
            string s = this.HiddenField1.Value;//此处获取的s为空

            Response.ClearContent();
            GridView1.DataSource = getDataSource();
            GridView1.DataBind();
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            System.IO.StringWriter sw = new System.IO.StringWriter(sb);
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            Literal header = new Literal();
            header.Text = "<h2>项目" + Request.QueryString["id"] + "</h2>";
            Header.Controls.Add(header);
            Header.RenderControl(htw);
            GridView1.RenderControl(htw);
            Response.Write("这里查询数据,输出结果就可以了。结果:" + sb.ToString());
            Response.End();
        }
    }



但是每次获取的值都是空的,个人理解是页面重新load了。但是我的想法是保存我textbox输入的值,然后跳到后台处理,如何做?

------解决方案--------------------
js设置的值在服务器端不能通过 objID.Value获取,要使用Request对象来获取,而且要提交了这个控件

 
JScript code
function GetData(p) {
       
        document.getElementById("HiddenField1").value =data;//data为某个textbox我自己输的值,是变值

        document.getElementById("d").innerHTML = "正在读取数据……";
        h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
//要发送给动态页
        h.open("GET", '<%=Request.FilePath %>?id=' + p.value+'&HiddenField1'+escape(data), true);
        h.onreadystatechange = function () {
            if (h.readyState == 4) {
                if (h.status >= 200 && h.status < 300) {
                    document.getElementById("d").innerHTML = h.responseText;
                }
                else {
                    document.getElementById("d").innerHTML = "<h2>数据操作错误:</h2>" + h.responseText;
                }
            }
        }
        h.send(null);

    }