2011-07-17 36 views
0

我在ASP.NET 2.0頁面中有以下內容。Request_Begin從不叫

<script type="text/javascript"> 
function pageLoad() 
{ 
    var manager = Sys.WebForms.PageRequestManager.getInstance(); 
    if (manager !=null) 
    { 
     debugger; 
     manager.add_beginRequest(Request_Begin); 
     manager.add_endRequest(Request_End); 
    } 
} 

function Request_Begin(sender, args) 
{ 
    debugger; 
    .... 
} 


function Request_End(sender, args) 
{ 
    .... 
} 
</script> 

pageLoad被調用,但Request_Begin中的代碼永遠不會被命中。  任何線索爲什麼?

+0

你使用UpdatePanel嗎? – SLaks

+0

嗯,似乎我完全誤解了這是什麼 –

回答

1

當你觸發使用微軟的腳本(例如從一個UpdatePanel)Ajax請求的回調將受到重創:

<%@ Page Language="C#" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script type="text/javascript"> 
     function pageLoad() { 
      var manager = Sys.WebForms.PageRequestManager.getInstance(); 
      if (manager != null) { 
       manager.add_beginRequest(Request_Begin); 
       manager.add_endRequest(Request_End); 
      } 
     } 

     function Request_Begin(sender, args) 
     { 
      debugger; 
     } 

     function Request_End(sender, args) { 
      debugger; 
     } 
    </script> 
</head> 
<body> 
    <form id="Form1" runat="server"> 
     <asp:ScriptManager ID="scm" runat="server" /> 
     <asp:UpdatePanel ID="up" runat="server"> 
      <ContentTemplate> 
       <%= DateTime.Now.ToLongTimeString() %> 
       <asp:LinkButton ID="link" runat="server" Text="update" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </form> 
</body> 
</html> 

如果使用jQuery做你的AJAX的東西忘掉那些被永遠開除。

+0

嗯,我是一個白癡,我認爲他們被稱爲當頁面開始被加載,並完全加載:) –

0

我認爲將它附加到Page_Load中已經太晚了。嘗試將其附加到PreInit中。