Функция обратного вызова Jquery выполняется снова и снова - PullRequest
0 голосов
/ 01 апреля 2010

Это моя функция jquery,

function getRecordspage(curPage, pagSize) {
   // code here
$(".pager").pagination(strarr[1], { callback: 
         function() { getRecordspage(2, 5);},current_page: curPage - 1, 
          items_per_page:'5',  num_display_entries: '5', next_text: 'Next', 
           prev_text: 'Prev', num_edge_entries: '1'
      });

}

и я вызываю эту функцию jquery,

<script type="text/javascript">
         $(document).ready(function() {
             getRecordspage(1, 5);
         });

</script>

Как вы видите, мой Это работает нормально в первый раз, и мой callback function настроен на current function сам ... когда он вызывается, callback выполняется снова и снова .... Как я могу предотвратить это? Любое предложение ....

EDIT:

Это моя функция

function getRecordspage(curPage, pagSize) {
    $.ajax({
        type: "POST",
        url: "Default.aspx/GetRecords",
        data: "{'currentPage':" + curPage + ",'pagesize':" + pagSize + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(jsonObj) {
            var strarr = jsonObj.d.split('##');
            var jsob = jQuery.parseJSON(strarr[0]);
            var divs = '';
            $.each(jsob.Table, function(i, employee) {
                divs += '<div class="resultsdiv"><br /><span class="resultName">' + employee.Emp_Name + '</span><span class="resultfields" style="padding-left:100px;">Category&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.Desig_Name + '</span><br /><br /><span id="SalaryBasis" class="resultfields">Salary Basis&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.SalaryBasis + '</span><span class="resultfields" style="padding-left:25px;">Salary&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.FixedSalary + '</span><span style="font-size:110%;font-weight:bolder;padding-left:25px;">Address&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.Address + '</span></div>';
            });
            $("#ResultsDiv").append(divs);
         }
    });
}

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

Функция обратного вызова в этом случае состоит в том, чтобы отображать соответствующий контент, а не делать нумерацию страниц, ваши настройки должны выглядеть примерно так:

var itemsPerPage = 5;
$(document).ready(function() {
  $(".pager").pagination(maxNumberOfElementsHere, { 
     callback: getRecordspage,
     items_per_page: itemsPerPage,
     num_display_entries: 5,
     next_text: 'Next', 
     prev_text: 'Prev',
     num_edge_entries: 1
  });
});

function getRecordspage(curPage) {
 // itemsPerPage is the new pagSize you have now
 // code here
}
0 голосов
/ 01 апреля 2010

Проблема в том, что вы вызываете функцию в функции. Это вызывает бесконечный цикл и никогда не закончится.

Вам нужно дать ему оператор IF, чтобы он закончился в какой-то момент.

...