ASP.. NET和AJAX嵌入式HTML修改
本文关键字:HTML 修改 嵌入式 AJAX NET ASP | 更新日期: 2023-09-27 18:11:48
我的项目在首页有一个"HUD",列出了正在转换课程计划的学生。它通过对一个独立的.ascx页面进行AJAX调用来实现这一点,该页面在c#中运行一些SQL语句并呈现HTML。然后,它将其传递回首页,放置在名为"dynamic"的div中。下面是在首页调用它的代码:
function loadDynamic() {
var ControlName = "utilities/HUD.ascx";
$.ajax({
type: "POST",
url: "Default.aspx/Result",
data: "{controlName:'" + ControlName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$('#dynamic').html(response.d);
},
failure: function (msg) {
$('#dynamic').html(msg);
}
});
}
这样做是为了方便多人在系统上工作并能够获得实时更新(有另一个脚本每10秒重新调用loadddynamic()函数,但这与此问题无关)。
然而,可能有相当多的学生试图在同一时间改变课程计划,所以为了节省页面空间,我们决定尝试放入一个"…和# more records" link (And <这将激活另一个javascript函数来显示一个单独的列表与所有的学生和隐藏只有少数学生的列表(这个javascript函数位于HUD上)。ascx页面).>
<script type="text/javascript">
function loadMorePending() {
this.document.getElementById(<% =pnlMorePending.ClientID %>).style.visibility = 'visible';
this.document.getElementById(<% =pnlPending.ClientID %>).style.visibility = 'hidden';
}
</script>
现在你有了背景,问题来了:
上面显示的第二个代码块包含对两个asp: panel的引用,其中包含位于HUD上的列表。ascx页面。当有人点击"…和更多的链接,它应该简单地隐藏一个面板和显示另一个。然而,当它去调用该函数时,它会抛出"Microsoft JScript运行时错误:'ctl01_pnlMorePending'未定义"。经过进一步的调查(当在浏览器中呈现html源代码后查看它时),即使"动态"div填充了来自HUD的数据。作为一个cx页,它仍然是空的!
<div id="dynamic"></div>
虽然这可以解释为什么找不到pnlMorePending,但它并没有给我任何关于如何纠正这一点的线索。我怎么能引用页面上不存在的东西呢?我试过用面板代替潜水器,但它仍然不起作用。我认为,问题在于脚本可以很好地转移到首页,但它不能在HUD上运行。在需要的地方添加一个cx页面。有没有办法在不使用2个不同HUD的情况下做到这一点?ascx页面和2个不同的"loadddynamic()"函数(第二个被调用并填充到"动态"div时,"…还有更多(按钮被按下)?
如果有点难以理解,请原谅。第一次发帖,问题相当深入。
您缺少引号:
this.document.getElementById('<% =pnlMorePending.ClientID %>').style.visibility = 'visible';