嗨,我有一个 aspx 页面,其中有以下代码

  <asp:ScriptManager ID="scriptManager" runat="server" AsyncPostBackTimeout="500" EnablePageMethods="true">
            </asp:ScriptManager>

            <script type="text/javascript">
          Sys.Application.add_init(BeginRequestHandler);
          Sys.Application.add_init(EndRequestHandler);

          Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
          Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
          function BeginRequestHandler(sender, args) {
              AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
          }
          function EndRequestHandler(sender, args) {
              AsynProcessing('none', 'AlertDiv', '');
          }
          function AsynProcessing(visstring, elem, img) {
              var adiv = $get(elem);
              adiv.style.display = visstring;
              adiv.image = img;
          }

但是页面抛出了一个 javascrip 错误,因为“Sys.WebForms.PageRequestManager”为空或不是对象。我已经把下面的脚本管理器标签。我什至尝试添加
<xhtmlConformance  mode="Transitional"/>

在 web.config 的部分中。但仍然出现相同的错误。
任何帮助深表感谢。提前致谢

最佳答案

在调用 Sys.WebForms.PageRequestManager 之前,使用此代码包装您的处理程序,以等待所有必要的脚本已加载

Sys.Application.add_init(function(){ ... your code ....}

http://msdn.microsoft.com/en-us/library/bb397532.aspx

编辑:这一行 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandl‌​er) 的错误原因是脚本尚未加载,因此如果您想要处理异步回发,您必须编写如下内容:
Sys.Application.add_init(function(){
    Sys.WebForms
       .PageRequestManager
       .getInstance()
       .add_beginRequest(BeginRequestHandler)
});

简单的英语是什么意思?等待所有脚本加载完毕(包括 Sys.WebForms 命名空间)并订阅事件 beginRequest你的脚本块应该是这样的:
<script type="text/javascript">
    Sys.Application.add_init(function () {
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    });
    Sys.Application.add_init(function () {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    });

    function BeginRequestHandler(sender, args) {
        AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
    }
    function EndRequestHandler(sender, args) {
        AsynProcessing('none', 'AlertDiv', '');
    }
    function AsynProcessing(visstring, elem, img) {
         var adiv = $get(elem);
         adiv.style.display = visstring;
        adiv.image = img;
    }
</script>

关于asp.net - 'Sys.WebForms.PageRequestManager' 为空或不是对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7062286/

10-11 01:19