Получить переменную в обработчик кнопки

ASP.NET
  1. 4 года назад

    Здравствуйте,пользуюсь ajax получаю переменную с js в asp.net Есть функция,которая через XMLHttpRequest() получает переменную страница pr_peremennya.aspx в ней как раз таки функция ,код,которой приведен ниже

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="pr_peremennya.aspx.cs" Inherits="pr_peremennya" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head >
    <style>
        #container {box-shadow: 4px 0px 18px -1px #0000ff; width: 150px; height: 40px; /*overflow: hidden;*/ }
    </style>
        <title></title>
        <script type="text/javascript">
           function get_var() {
                var x = "12";
                var y = "14"
                var params = 'x=' + encodeURIComponent(x) + '&y=' + encodeURIComponent(y);
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.open("POST", "pr_per.aspx", true);
                xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
                xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
               
                xmlhttp.onreadystatechange = function () {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    
                        document.getElementById('qz').innerHTML = xmlhttp.responseText;
                    }
                };
    
                xmlhttp.send(params);
            }
    
            document.addEventListener("DOMContentLoaded", function () {
                document.getElementById("the-button").addEventListener("click", get_var);
            });
        </script>
    </head>
    <body>
       <div id="container">
       <button id="the-button" >Click me</button>
    
        <form id="Form1" runat = "server">
         
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
       
            </form>
       
      
       </div>
         <div id="qz"></div>
    </body>
    </html>
    

    код страницы pr_per.aspx откуда берутся даные

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="pr_per.aspx.cs" Inherits="pr_per" %>
    
    <%
        string x = Request["x"];
        string y = Request["y"];
        Response.Write(x+" "+y);
        %>
    

    Вот в чем сама проблема он прекрасно выводит мне эти данные в div id = qz на странице pr_peremennya.aspx
    Но как мне получить эту переменную в обработчик <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> на странице pr_peremennya.aspx.cs этой кнопки?
    Этот вариант не работает

    protected void Button1_Click(object sender, EventArgs e)
        {
            string rd1 = Request["y"];
           Label1.Text="y= " + rd1;*/
        }

    Заранее большое спасибо!

  2. Alexandr_Erohin

    Feb 20 Администратор
    Добавлено 4 года назад Alexandr_Erohin

    Как вариант добавлять переменную в скрытое поле:

    <div>
        <asp:HiddenField ID="hidden" runat="server" ></asp:HiddenField>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" ></asp:Button>
    </div>

    JS:

    document.getElementById('hidden').innerHTML = xmlhttp.responseText;

    C#:

    protected void Button1_Click(object sender, EventArgs e)
    {
        // Переменная
        string hidden = this.hidden.Value;
    }
  3. Почему то этот вариант не работает,
    Пробовал так

     function isEmail() {
                document.getElementById('hidden').innerHTML = "1111111";
            }
    <input type="button" value="Проверить" onclick="isEmail()">
        <form id="Form1" runat = "server">
         
         <asp:HiddenField ID="hidden" runat="server" ></asp:HiddenField>
         <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" ></asp:Button>
         <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
       
      
            </form>
     protected void Button1_Click(object sender, EventArgs e)
        {
          
            string hidden = this.hidden.Value;
            Label1.Text = "=" + hidden;
           
        }

    Кроме = ничего не выводит,не сложно ли Вам подсказать в чем тут проблема?

  4. Добавлено 4 года назад zkolya

    С label тоже не работает,он в нее значения заносит,но после нажатия страница обновляется,может в этом дело,хотя если сделать все по кнопкам серверным значения остаются,а эти исчезают?

    document.getElementById('Label1').innerHTML = xmlhttp.responseText;
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    string lb = Label1.Text;

    Заранее огромное Вам спасибо.

  5. Все разобрался проблема с том.что нужно использовать value вместо innerHtml

    document.getElementById('hidden').value= xmlhttp.responseText;

или зарегистрируйтесь чтобы ответить