我通过代码隐藏在更新面板中设置(服务器控件的)值,它必须使用一些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控件,但文本为emtpy:
jQuery的:
var text = $("[id$='Label1']").text();
// text = ""; should be "Hello, World"
答案 0 :(得分:0)
您是否检查了实际发送到浏览器的HTML?请记住,JQuery对ASP.NET一无所知 - 只是HTML(当然是JavaScript)
答案 1 :(得分:0)
<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实际上有文本。