我正在尝试实施分页。一次显示一组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只调用上面写过的函数..
答案 0 :(得分:0)
您似乎没有从ajax调用发回信息。基本上yoi可能是在DB上获取值但似乎没有将数据发送回调用.. 你以某种格式回显结果集吗?我在代码中看不到。在任何情况下你都无法从js访问$ session变量......这些是php中可访问的服务器端。
答案 1 :(得分:0)
执行此操作的正确方法是客户端代码使用AJAX调用的参数指定要获取的记录“页面”。通过使用这样的会话变量,服务器没有在哪个时间获取哪些记录的概念。它总是会返回“下一个”结果。因此,无论何时加载该网页,它都将提供“下一组”记录。无法在结果集中向后翻页。
基本上,您将存储在本地JavaScript值(或页面上的隐藏表单元素,但您觉得在页面上存储值很舒服)当前结果集的信息和您的AJAX调用将发送必要信息到服务器返回请求的结果集。
例如,您可以使用本地JavaScript值来说明您看到的起始记录和页面大小:
startRecord = 1;
pageSize = 10;
然后,如果你单击“下一步”按钮,AJAX调用将向服务器提供参数,告诉它要取的内容:
startRecord + pageSize, pageSize
当然,您需要添加一些逻辑来确定您是在第一页还是最后一页上禁用“上一页”和“下一页”功能。你可以做更多的事情(可变页面大小,过滤和搜索,排序等),但这是它的基本要点。