asp.net在ajax更新面板之后访问javascript变量
本文关键字:之后 访问 javascript 变量 net ajax 更新 asp | 更新日期: 2023-09-27 17:57:58
我正在ASP.NET web项目上使用AJAX来更新页面。我的一些函数返回XML,我希望在页面重新加载后将其嵌入到页面中。这部分是有效的,下面是它在页面顶部的外观示例:
var productXML = "<?xml version='"1.0'"?><ArrayOfProduct xmlns:xsi='"http://www.w3.org/2001/XMLSchema-instance'" xmlns:xsd='"http://www.w3.org/2001/XMLSchema'"><Product><ActualProdID>123</ActualProdID><Name>Test</Name><Description>Test</Description><Edition>Test</Edition><Platform>Test</Platform><Family>Test</Family><Type>Test</Type><DeploymentTypes>Test</DeploymentTypes><BaseActualProdID>Test</BaseActualProdID><Price>0</Price></Product></ArrayOfProduct>";
在本页的后面,我尝试使用XML,但它不起作用。我试着做一些简单的事情,只是扔了一个警报框,看起来像这样:
<script type="text/javascript">
function closeLoading()
{
jQuery('.pleaseWaitPanel').css({ 'display': 'none', 'visibility': 'hidden' });
alert("here");
alert(productXML);
alert("here2");
}
</script>
closeLoading()在内部调用:
window.onload = function () { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading); };
它加载jQuery,第一个警报"here"工作得很好。当我去提醒productXML时,什么也没发生。它不会抛出JavaScript错误,我使用的是Firebug。我可以确认XML在页面上。
如有任何帮助,我们将不胜感激!!
从代码片段来看,closeLoading
函数似乎只在window.onload
函数中被调用。这意味着在任何Ajax请求完成后都不会调用它,因为窗口不会被重新加载。
我会尝试将您对Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading)
的呼叫转移到您关闭服务器端表单标签之前:
<form runat="server">
...
<script>
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading);
</script>
</form>
希望这能有所帮助。
var productXML
是ServerSide变量,因此您在客户端脚本中无法访问该变量。
如果你想在javascript函数中使用,你可以这样做:
1) 将结果放入隐藏的文本框中,如
<input type='hidden' value='<%=productXML%>'>
然后简单地获取文本框的值。