JQuery не работает, пока не отлажен с помощью Firebug - PullRequest
0 голосов
/ 27 марта 2012

У меня странная проблема, часть кода jquery не работает должным образом, пока я не добавлю точку останова в firebug, это код

    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 ]

2 голосов
/ 27 марта 2012

Вам нужно вызвать функцию initPagination() после ответа от сервера.

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

            }, 'json');

То, что здесь происходит, может быть, вы вызываете функцию перед загрузкой данных. Когда у вас есть точка отладки, она иногда задерживается, что позволяет получить ответ до вызова вашей функции.

0 голосов
/ 28 марта 2012

Наконец-то решил, как это, я знаю, что это не правильный путь, но начал работать, я полностью удалил функцию 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
                                            });
            }
        }
0 голосов
/ 27 марта 2012

Кажется, вы ввели какое-то состояние гонки.Я бы начал с анализа запросов и ответов вашего сервера.Возможно, вы захотите добавить вызов инициализации в функцию обратного вызова.

...