asp.net在ajax更新面板之后访问javascript变量

asp.net accessing javascript variables after ajax updatepanel

本文关键字:之后 访问 javascript 变量 net ajax 更新 asp      更新时间:2023-09-26

我正在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%>'> 

然后简单地获取文本框的值。