jquery在使用firebug进行调试之前无法正常工作

时间:2012-03-27 15:53:40

标签: jquery debugging firebug

我遇到一个奇怪的问题,在我在firebug中添加断点之前,jquery代码的一部分工作不正常,这就是代码

    function loadPreviousGameCount() {

        var $hdnTotalPreviousGamesCount = $('#<%=hdnTotalPreviousGamesCount.ClientID %>');

        // load page count only if it is not already loaded
        if ($hdnTotalPreviousGamesCount.val() == "-1") {
            $.post('MypageUrl&MemberId=<%=MemberId%>',
            {},
            function(response) {
                if (response.IsDone) {
                    $hdnTotalPreviousGamesCount.val(response.Data);
                } else {
                    $hdnTotalPreviousGamesCount.val(response.Message);
                }
            }, 'json');
        }
    }

我正在使用此功能来启动分页

function initPagination() {

   loadPreviousGameCount();

   // I put breakpoint on the below line("var pageCount...")
   var pageCount = parseInt($('#<%=hdnTotalPreviousGamesCount.ClientID %>').val());

   // Create pagination element              
   $("#divPager").show().pagination(pageCount,
                   {
                      callback: loadPreviousGames,
                      num_edge_entries: 1,
                      items_per_page: 5
                   });
}

所以我想要做的是,我正在从服务器加载游戏数量并将其保存到隐藏字段(如果尚未加载),并且我正在使用分页游戏。 代码工作正常,但只是第二次或者我第一次调试点。

所以我发现在两种情况下在initPagination函数中的隐藏字段中写的值

  1. 在initPagination函数的第二次调用中。

  2. 如果我在第一次通话中提到上面提到的一行调试点。

  3. 任何线索?

3 个答案:

答案 0 :(得分:2)

您需要在服务器响应后调用initPagination()函数。

$.post('MypageUrl&MemberId=<%=MemberId%>',
            {},
            function(response) {
                if (response.IsDone) {
                    $hdnTotalPreviousGamesCount.val(response.Data);
                } else {
                    $hdnTotalPreviousGamesCount.val(response.Message);
                }
            initPagination();

            }, 'json');

这里发生的事情可能是您在加载数据之前调用该函数。如果你有一个调试点,它会延迟一段时间,使你的函数调用之前响应。

答案 1 :(得分:0)

你似乎已经引入了某种竞争条件。我首先分析您的服务器请求和响应。您可能希望将初始化调用添加到回调函数。

答案 2 :(得分:0)

最后像这样解决了,我知道这不是正确的方法,但已经开始工作了 我已经完全删除了loadPreviousGamesCount()函数

 function initPagination() {

            var $hdnTotalPreviousGamesCount = $('#<%=hdnTotalPreviousGamesCount.ClientID %>');
            if ($hdnTotalPreviousGamesCount.val() == "-1") {
                $.post('<%= Page.ResolveUrl("~/AjaxPageRequestHandler.aspx") %>?class=imLeagues.Web.Members.Pages.BO.Member.MemberGamesBO&method=GetMemberPreviousGamesCount&MemberId=<%=MemberId%>',
                {},
                function(response) {
                    if (response.IsDone) {

                        $hdnTotalPreviousGamesCount.val(response.Data);

                        // Create pagination element              
                        $("#divPager").show().pagination(response.Data,
                                            {
                                                callback: loadPreviousGames,
                                                num_edge_entries: 1,
                                                items_per_page: 5
                                            });

                    } else {
                        $hdnTotalPreviousGamesCount.val(response.Message);
                    }
                }, 'json');
            }
            else {
                // Create pagination element
                $("#divPager").show().pagination($hdnTotalPreviousGamesCount.val(),
                                            {
                                                callback: loadPreviousGames,
                                                num_edge_entries: 1,
                                                items_per_page: 5
                                            });
            }
        }