AJAX调用后会话变量不更新

时间:2014-05-22 05:44:36

标签: php jquery ajax session pagination

我有点难过。我有2个PHP页面。一个基本上显示模板,点击后,AJAX调用调用外部页面并显示所有必要的信息。我的问题是我的会话变量没有更新。我正在使用一些分页,数字没有更新。我的模板页面上的一些代码:

重新分页

    session_start();
    $pagination .= $_SESSION['position'] == "" ? '' : 'Items '.$_SESSION['position'].'-'.$_SESSION['item_per_page'].' of '.$get_total_rows ;
    if($pages > 1)
        {
        $pagination .= '<ul class="paginate nav nav-pills">';
        for($i = 1; $i<=$pages; $i++)
        {
            $pagination .= '<li><a href="#" class="paginate_click" id="'.$i.'-page">'.$i.'</a></li>';
        }
        $pagination .= '</ul>';
    }
<?php echo $pagination; ?>

<div id="results">
    <!-- Results from query will go in here -->
</div>

j$(".paginate_click").click(function (e) {
    j$("#results").prepend('<div class="loading-indication"><img src="/assets/loader.gif" /></div>');
    var clicked_id = j$(this).attr("id").split("-"); //ID of clicked element, split() to get page number.
    var page_num = parseInt(clicked_id[0]); //clicked_id[0] holds the page number we need 
    j$('.paginate_click').removeClass('active'); //remove any active class
    //post page number and load returned data into result element
    //notice (page_num-1), subtract 1 to get actual starting point
    j$("#results").load("development_fetch.php", {'page': (page_num-1)}, function(){
        });
    j$(this).addClass('active'); //add active class to currently clicked element
    return false; //prevent going to herf link
}); 

在development_fetch.php中:

session_start();
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
$position = ($page_number * $item_per_page);
$_SESSION['position'] = $position;
$_SESSION['item_per_page'] = $item_per_page;
//Grab code to display inside template blah.

如果您在分页中单击第1页,则应该导致:

  

项目0 - 100 of 1000

如果我点击第2页,它应该是:

  

项目100 - 200 of 1000

但它只是停留在:

  

项目0 - 100 of 1000

0是$_SESSION['position'] 100是$_SESSION['item_per_page']

我不明白为什么不更新。请帮助堆叠器!

4 个答案:

答案 0 :(得分:2)

我已经解决了我的问题。我遇到的问题是,当我在做ajax时,会话变量没有实时更新。我所做的是,我只是将ajax异步转为false,因为当你进行异步时,值为cache不是更新的值,因为它处于异步模式。如果您正在使用jquery,请执行以下操作:

$。AJAX({   键入:&#39; POST&#39;,   url:&#39; url&#39;,   数据:&#39;数据&#39;,   成功:function(){},   async:false });

答案 1 :(得分:1)

session_start();放在装有AJAX的页面的开头。

答案 2 :(得分:0)

我想我在development_fetch.php

中找到了它
$position = ($page_number * $item_per_page);

好的,$page_number有一个值,但是$item_per_page呢?我猜它是零,当然乘法的结果是零。然后在$_SESSION

上设置这些零

溶液:

设置$item_per_page

session_start();
$item_per_page = 20;
// ...rest of code

答案 3 :(得分:0)

我也遇到了这个问题,但我的表现很奇怪。似乎会议的速度不足以赶上ajax ..这个问题已经解决了吗?