jquery ajax php:页面内容不爽!

时间:2011-05-24 11:31:20

标签: php ajax jquery

我正在尝试实施分页。一次显示一组9个产品。然后在点击“查看更多”按钮时,div的内容应该由AJAX刷新并显示下一组9个产品......这里是php代码

if(!isset($_SESSION['current'])){
        $query = "SELECT MAX(addedon) AS addedon FROM tags";
        $result = mysql_query($query);
        report($result);
        $dated = mysql_fetch_assoc($result);
        $recent = $dated['addedon'];
        $_SESSION['current'] = $recent;                 
}

$query = "SELECT id, addedon
                FROM tags
                WHERE addedon <= '{$_SESSION['current']}'
                ORDER BY addedon DESC
                LIMIT 9
                ";
$result = mysql_query($query);
report($result);
while($row = mysql_fetch_assoc($result)){
    $_SESSION['current'] = $row['addedon'];
    $id = $row['id'];
    $query = "SELECT name, image, cost
                    FROM tags, stock
                    WHERE tags.id={$id} AND stock.tagid = tags.id
                    ";
    $result1 = mysql_query($query);
    report($result1);
    $prodInfo = mysql_fetch_assoc($result1);
    $pname = $prodInfo['name'];
    $pimg = $prodInfo['image'];     //the path to the actual image
    $pcost = $prodInfo['cost'];
    echo "<div class=\"oneproduct\">";
    echo "<h3>{$pname}</h3><br />";
    echo "<img src=\"{$pimg}\" height=\"{$ht}\" width=\"85px\" alt=\"prodImg\" /><br />";
    echo "<span>Rs. {$pcost}</span>";
    echo "<input type=\"image\" src=\"images/addcart.png\" class=\"addBtn\" />";
    echo "</div>";
}

在获取并显示所有产品后,页面上的最后一个产品将存储为SESSION的“当前”变量。 问题是:ajax的东西总是返回9个产品的初始设置,一旦我刷新页面,下一组产品即将到来..如何让我的链接更改内容?

ajax代码:

$("#viewMore").bind('click', function(){
            $.ajax({
                url:'showNineProds.php',
                type:'POST',
                dataType:'html',
                success:function(data){
                    $("div#nineproducts").html(data);
                },
                error:function(xhr, status){
                    alert("Problem");
                },
                complete:function(xhr, status){                     
                }
            });     
});

showNineProds.php只调用上面写过的函数..

2 个答案:

答案 0 :(得分:0)

您似乎没有从ajax调用发回信息。基本上yoi可能是在DB上获取值但似乎没有将数据发送回调用.. 你以某种格式回显结果集吗?我在代码中看不到。在任何情况下你都无法从js访问$ session变量......这些是php中可访问的服务器端。

答案 1 :(得分:0)

执行此操作的正确方法是客户端代码使用AJAX调用的参数指定要获取的记录“页面”。通过使用这样的会话变量,服务器没有在哪个时间获取哪些记录的概念。它总是会返回“下一个”结果。因此,无论何时加载该网页,它都将提供“下一组”记录。无法在结果集中向后翻页。

基本上,您将存储在本地JavaScript值(或页面上的隐藏表单元素,但您觉得在页面上存储值很舒服)当前结果集的信息和您的AJAX调用将发送必要信息到服务器返回请求的结果集。

例如,您可以使用本地JavaScript值来说明您看到的起始记录和页面大小:

startRecord = 1;
pageSize = 10;

然后,如果你单击“下一步”按钮,AJAX调用将向服务器提供参数,告诉它要取的内容:

startRecord + pageSize, pageSize

当然,您需要添加一些逻辑来确定您是在第一页还是最后一页上禁用“上一页”和“下一页”功能。你可以做更多的事情(可变页面大小,过滤和搜索,排序等),但这是它的基本要点。