如何在每次调用AJAX时修改PHP变量


How to modify a PHP variable everytime AJAX is called

我正在使用AJAX从图像库加载更多数据。

我传递PHP变量来设置$页码和其他数据。每次我从AJAX加载更多数据时,我都希望$page增加1,这样下次它就会获得列表中的下一个数据。这是我的JS

$(window).bind('scroll', function() {
if($(window).scrollTop() >= $('#postswrapper').offset().top + $('#postswrapper').outerHeight() - window.innerHeight) {

    $('div#loadmoreajaxloader').show();
    $.ajax
    ({
        url: "loadmore.php",
        method: "get",
        data: { page: "<?=$page?>", perpage: "<?=$perpage?>"},
        success: function(html)
                {
                    if(html)
                    {
                        $("#postswrapper").append(html);
                        $('div#loadmoreajaxloader').hide();
                        // ###### THIS IS NOT WORKING 
                        <? $page++; ?>
                    }
                    else
                    {
                        $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
                    }
                }
    }); // close AJAX
}  // close if()
}); // close $(window)

我尝试将<? $page++; ?>合并到成功函数中,但它不起作用。

我在SQL查询中使用$page变量

这是我的货。php代码

if (isset($_GET['page'])) 
{
   $page = $_GET['page'];  
   $perpage = $_GET['perpage']; 
   $start = ($page -1) * $perpage ;
   $sql = mysql_query("select * from ..... limit ".$start.", ".$perpage." ");
   $html = '';
    while($blog2 = mysql_fetch_array($sql))
{  
    $html .='HTML GOES HERE';
 }  
echo $html;
exit;
} 

我试图实现的是每次加载更多数据时从下一页开始加载SQL查询。。。有什么建议我应该怎么做吗?

首先,记住要清除PHP文件中的任何用户输入,以防止sql注入:

$page = $_GET['page'];
$perpage = $_GET['perpage'];
// escape the values, or make sure they are numbers, e.g.:
if(!is_numeric($page))
  $page = 0;
if(!is_numeric($perpage))
  $perpage = 10; // or whatever default value

将PHP值写入Javascript变量中,并在js代码中使用这些值:

var pageNumber = <?= $page ?>;
var perPage = <?= $perpage ?>;
$(window).bind('scroll', function() {
  if($(window).scrollTop() >= $('#postswrapper').offset().top + $('#postswrapper').outerHeight() - window.innerHeight) {

    $('div#loadmoreajaxloader').show();
    $.ajax
    ({
        url: "loadmore.php",
        method: "get",
        data: { page: pageNumber, perpage: perPage},
        success: function(html)
                {
                    if(html)
                    {
                        $("#postswrapper").append(html);
                        $('div#loadmoreajaxloader').hide();
                        // use the js variable
                        pageNumber++;
                    }
                    else
                    {
                        $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
                    }
                }
    }); // close AJAX
}  // close if()
}); // close $(window)

PHP运行在服务器端,AJAX运行在客户端。您需要一个javascript变量(尽管您可以使用PHP设置其初始值)。