AJAX UpdateProgress无法在服务器上运行?

时间:2010-08-05 21:41:47

标签: ajax updateprogress

我试图在点击按钮后将数据加载到gridview时显示动画图像。它在localhost上运行得很好,但是当我部署它时,它没有。我搜索过帖子,而且我没有做过任何似乎最常见的错误...即。将updateprogress放在updatepanel等内。但是,我使用的是masterpage - 但masterpage上没有scriptmanager。当我将生产与localhost进行比较时,我注意到我的视图源页面存在以下差异。任何人都可以帮助我理解为什么生成此工作的JavaScript可能不会出现在生产中?

localhost (它工作的地方)我在页面底部看到这个:

[CDATA[
Sys.Application.initialize();
Sys.Application.add_init(function() {
    $create(Sys.UI._UpdateProgress, {"associatedUpdatePanelId":null,"displayAfter":500,"dynamicLayout":true}, null, null, $get("ctl00_ContentPlaceHolder1_UpdateProgress1"));
});

制作(它不起作用的地方),这就是我所看到的:

Sys.Application.initialize();

2 个答案:

答案 0 :(得分:0)

将我的项目从VS2008转换为VS2010后,我真的很难过。 UpdateProgress突然停止工作,这在VS2008中很好。花了整整一个下午来搜索答案并试验这个,最后我发现Scott Gu's张贴出了什么问题。

这是一个自动生成的web.config条目'xhtmlConformance mode =“Legacy”'。

禁用此功能后,它又开始工作了。可能不是你的情况,只是因为那些在同样的问题上挣扎的人。

快乐编码

答案 1 :(得分:0)

这可能不是您理想的解决方案,但您可以使用javascript显示()或隐藏()您的动画图像。使用以下javascript函数(并删除UpdateProgress控件)应该可以解决问题。

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest); 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest); 

 function beginRequest(sender, args) {
  document.getElementById('myImageElement').style.display = 'block';  
}

 function endRequest(sender, args) {
  document.getElementById('myImageElement').style.display = 'none';  
}

请记住,每次回发都会发生这种情况,您可能需要使用sender参数来推断出哪个元素称为回发,并且仅在命中正确的updatepanel时才执行显示。这些事件在每个UpdatePanel回发的开头和结尾(分别)触发。祝你好运。