asp.net在ajax updatepanel之后访问javascript变量

时间:2011-05-31 12:56:01

标签: c# javascript jquery asp.net ajax

我在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在页面上。

对此的任何帮助都将非常感激!!

2 个答案:

答案 0 :(得分:1)

从您的代码段开始,您的closeLoading功能似乎只在您的window.onload功能中被调用。这意味着在任何Ajax请求完成后将不会被调用,因为窗口将不会被重新加载。

我会尝试将您的呼叫转移到Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading),直到关闭服务器端表单标记:

<form runat="server">
    ...
    <script>
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(closeLoading);
    </script>
</form>

希望这有帮助。

答案 1 :(得分:0)

var productXML 

是ServerSide变量,因此您无法在客户端脚本中访问此变量。

如果你想在javascript函数中使用,你可以这样做:

1)将结果隐藏在文本框中,如

<input type='hidden' value='<%=productXML%>'> 

然后只需获取文本框的值。