2010-04-01 237 views
1

我无法获得此jquery语句在页面加载时工作,但当我刷新页面时,它有效。这些jquery语句有什么问题?

<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]); 
     } 
    }); 
} 
+0

需要查看我怀疑的getRecordspage函数。 – 2010-04-01 10:56:23

+0

让我们看看getRecordspage(...) – Strelok 2010-04-01 10:57:07

+0

@David和@strelok看到我的编辑... – 2010-04-01 10:58:09

回答

2

您的getRecordspage函数是异步的。它创建一个Ajax调用,当它完成时,设置您正在尝试读取的值。但是,在读取值之前,您并未等待呼叫完成。

+0

@David如果我包含在成功函数我的回调函数被反复调用...... – 2010-04-01 11:19:19

+0

@David建议我该怎么做? – 2010-04-01 11:31:22

+0

@大卫得到它的工作'async:false'做了诀窍.... – 2010-04-01 12:28:45

0

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

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

编辑:在我看到您的编辑与更多的信息之前,这个答案。

+0

@大卫我发现没有在萤火虫和网页开发工具栏错误... – 2010-04-01 11:03:38

1

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

$(".pager").pagination(maxvalues, { 
    //my syntax 
}); 
在$阿贾克斯(...) success回调

+0

@sterlok如果我包含在成功函数我的回调函数被反复调用... – 2010-04-01 11:19:02

+0

邮政编码为现在是请。 – Strelok 2010-04-01 11:39:22

+0

@sterlok现在看到我的'getrecordspage'函数... – 2010-04-01 11:41:41