【问题标题】:How to access values set in asp.net ajax updatepanel from jquery如何从 jquery 访问在 asp.net ajax updatepanel 中设置的值
【发布时间】:2009-11-20 17:57:32
【问题描述】:

我通过代码隐藏在更新面板中设置(服务器控件的)值,它必须使用一些 javascript 方法来设置这些值。如果我在此之后尝试通过 jquery 访问它们,它不会识别 asp.net ajax 设置的任何内容

asp.net:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>

<asp:Button ID="Button1" runat="server" Text="Set Label From Ajax" onclick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>


</ContentTemplate>
</asp:UpdatePanel>

后面的代码:

protected void Button1_Click(object sender, EventArgs e)
{
    this.Label1.Text = "Hello, world";
}

点击按钮后Label1为“Hello, world”——下面正确获取了html控件,但文本为空:

jQuery:

var text = $("[id$='Label1']").text();
// text = ""; should be "Hello, World"

【问题讨论】:

    标签: jquery asp.net-ajax


    【解决方案1】:
    <script type=”text/javascript”>
    
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(panelLoaded);
    
    function panelLoaded(sender, args){
    
        var text = $("label[id*='Label1']").text();
    
    }
    
    </script>
    

    这将访问 PageRequestManager 实例的事件处理程序,向 pageLoaded 事件添加一个函数,并在更新面板完成加载时调用该函数。因为您使用的是 ajax,所以 jquery 代码仅在设置值之前在页面的第一次加载时运行。这将在 UpdatePanel 加载并且 Label1 实际具有文本后分配文本。

    【讨论】:

      【解决方案2】:

      您是否检查了实际发送到浏览器的 html 是什么?请记住,JQuery 对 ASP.NET 一无所知——只知道 HTML(当然还有 JavaScript)

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 2023-03-21
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 2010-09-06
        相关资源
        最近更新 更多