'Sys.WebForms.PageRequestManager' является нулевым или не является объектом - PullRequest
4 голосов
/ 15 августа 2011

Привет, у меня есть страница 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' является нулевым или не является объектом. Я поместил ниже тег scriptmanager. Я даже прибавил

<xhtmlConformance  mode="Transitional"/>

в разделе web.config.But все еще появляется та же ошибка.
Буду признателен за любую оказанную помощь. Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 15 августа 2011

Оберните ваши обработчики этим кодом, чтобы дождаться загрузки всех необходимых скриптов, прежде чем вызывать 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>
2 голосов
/ 15 августа 2011

Похоже, ваш блок JavaScript выполняется до загрузки ASP.net Ajax, попробуйте разместить его внизу страницы или после <form> тегов ...

0 голосов
/ 12 июня 2012

У меня тоже была эта проблема.Для меня это произошло из-за веб-фермы и отсутствия записи машинного ключа в файле web.config.

...