【问题标题】:What is wrong with these jquery statements?这些 jquery 语句有什么问题?
【发布时间】:2012-12-22 05:23:28
【问题描述】:

我无法让这个 jquery 语句在页面加载时工作,但是当我刷新 F5 页面时它会工作一次。

<div id="ResultsDiv"></div>
<div id="pager" class="pager"></div>
<input id="HfId" type="hidden" />
<script type="text/javascript">
var itemsPerPage = 5;
$(document).ready(function() {
  getRecordspage(0, itemsPerPage);
  var maxvalues = $("#HfId").val();
  alert(maxvalues);
  $(".pager").pagination(maxvalues, {
    callback: getRecordspage,
    current_page: 0,
    items_per_page: itemsPerPage,
    num_display_entries: 5,
    next_text: 'Next',
    prev_text: 'Prev',
    num_edge_entries: 1
  });
});
</script>

在初始页面加载时alert(maxvalues); 什么都没有。但是,当我刷新它时,它会显示 maxvalues 的值,它位于隐藏字段 HfId 中,因为它是在函数 getRecordspage 中分配的。

为什么会出现这种奇怪的行为......任何建议......

编辑:

function getRecordspage(curPage) {
    $.ajax({
        type: "POST",
        url: "Default.aspx/GetRecords",
        data: "{'currentPage':" + (curPage + 1) + ",'pagesize':5}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(jsonObj) {
            $("#ResultsDiv").empty();
            $("#HfId").val("");
            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>';
            });
    $(".pager").pagination(strarr[1], {
             callback: getRecordspage,
             current_page: 0,
             items_per_page: 5,
             num_display_entries: 5,
             next_text: 'Next',
             prev_text: 'Prev',
             num_edge_entries: 1
         });
            $("#ResultsDiv").append(divs);
            $(".resultsdiv:even").addClass("resultseven");
            $(".resultsdiv").hover(function() {
                $(this).addClass("resultshover");
            }, function() {
                $(this).removeClass("resultshover");
            });
            $("#HfId").val(strarr[1]);
        }
    });
}

【问题讨论】:

  • 需要看看我怀疑的getRecordspage函数。
  • 我们来看看getRecordspage(...)
  • @David 和 @strelok 看到我的编辑...
  • 那么,第一次加载页面并执行 $.ajax(...) 时,strarr[1] 是什么?
  • @strelok strarr[1]17 当我发出警报时...

标签: jquery function document ready


【解决方案1】:

您的getRecordspage 函数是异步的。它会进行 Ajax 调用,当它完成时,会设置您尝试读取的值。但是,在读取值之前,您无需等待调用完成。

【讨论】:

  • @David 如果我在成功函数中包含 with 我的回调函数会被一遍又一遍地调用......
  • @David 建议我该怎么做?
【解决方案2】:

我的猜测是 $.ajax(...) success 回调正在执行 alert(maxvalues); 被调用。如果确实如此,只需放置您的分页代码

$(".pager").pagination(maxvalues, {
     //my syntax
});

在 $.ajax(...) success 回调中。

【讨论】:

  • @sterlok 如果我在成功函数中包含 with 我的回调函数会被一遍又一遍地调用...
【解决方案3】:

如果没有关于您的问题的更多信息(缺少功能等),最好的建议是告诉您使用firefox 并安装firebugfirequery

然后尝试放置一些断点并检查值。这是tutorial

编辑:在我看到您的编辑提供更多信息之前做出了这个答案。

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多