我遇到一个奇怪的问题,在我在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函数中的隐藏字段中写的值
在initPagination函数的第二次调用中。
如果我在第一次通话中提到上面提到的一行调试点。
任何线索?
答案 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
});
}
}