Request_Begin从未调用过

时间:2011-07-17 14:02:27

标签: ajax asp.net-2.0

我在ASP.NET 2.0页面中有以下内容。

<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中的代码似乎永远不会被命中。  任何线索为什么?

2 个答案:

答案 0 :(得分:1)

当您使用Microsoft脚本(例如,来自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,那就忘掉那些被解雇的东西。

答案 1 :(得分:0)

我认为将它附加在Page_Load中为时已晚。尝试将其附加到PreInit中。