我在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在页面上。
对此的任何帮助都将非常感激!!
答案 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%>'>
然后只需获取文本框的值。