2010-10-12 59 views
1

我正在使用下面的代码来增加我的php/mysql通过一个'more'按钮获取的结果数量。Jquery/Ajax cookie

我的问题是:我可以添加一个jQuery Cookie,以便当'more'按钮被按下时,更多的结果被加载,当前状态被保存吗?

有问题的结果列出了包含指向它们各自文章的链接的元素。唯一的问题是,当您从“更多”结果中查看文章,然后返回到列出的结果页面时,由ajax(more-press.php)带来的结果已消失:(

因此,我的问题希望这是有道理的预先感谢S.

$(document).ready(
function(){           
     $(function() { 
     //More Button 
     $('.more').live("click",function() 
     { 
     var ID = $(this).attr("id"); 
     if(ID) 
     { 
     $("#more"+ID).html('<img src="images/more_press.gif" alt="More results..." />'); 
     $.ajax({ 
     type: "POST", 
     url: "more_press.php", 
     data: "lastmsg="+ ID, 
     cache: false, 
     success: function(html){ 
     $("div#updates").append(html); 
     $("#more"+ID).remove(); 
       } 
      }); 
     } else { 
     $(".morebox").html('<p><strong>No more results...</strong></p>'); 
     } 
     return false; 
       }); 
      }); 
     }) 

编辑:也有这方面的相关职位 - Question 2

回答

5

当然,你可以做到这一点使用jquery cookie plugin设置cookie。当他们点击“更多”按钮并加载更多结果时,例如:

// set cookie to expire in 60 minutes when 'more' is clicked 
$.cookie('viewing_expanded_content',true, { 
    expires : new Date(new Date().valueOf() + 60 * 60 * 1000) 
}); 

当他们返回到文章列表时,请检查服务器端的cookie并最初提供完整列表,或者使用Javascript检查客户端cookie的存在并获取其他内容如果cookie的值设置为'true':

if($.cookie('viewing_expanded_content')) { 
    // make your ajax call, etc 
} 

希望有帮助。

+0

非常感谢。我已经设法设置cookie,但我似乎无法'发射'ajax呼叫。 – ss888 2010-10-13 10:05:04

+0

您可以将'more'按钮所使用的点击处理程序分解出来,以便代替'$('。more')。live(“click”,function()...'给函数一个名称并附加('click',clickHandler)'(假设clickHandler是你函数的名字),你也可以使用'$('。more')。click( )'在Cookie处理代码中触发更多按钮上的点击事件,这会稍微优雅地做同样的事情。 – justinbach 2010-10-13 13:13:08