【问题标题】:jquery ajax php: page content not refrshing!jquery ajax php:页面内容不刷新!
【发布时间】:2011-05-24 19:57:04
【问题描述】:

我正在尝试实现分页。一次显示一组 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 只是调用了上面已经写好的函数..

【问题讨论】:

  • report() 调用是做什么的?
  • 您似乎没有传递任何可以让您对数据进行分页的参数。您只是每次都选择相同的数据。看看这个phpfreaks.com/tutorial/basic-pagination 让它工作,当你知道发生了什么时,你应该能够找出你的问题:-)
  • @cromestant 它只是用于错误报告......没什么大不了的
  • @martswite 我认为我不需要将任何参数发送到此处的页面..我的会话概念出现的数据..我只是使用 SESSION 来处理要获取的记录跨度>

标签: php ajax jquery


【解决方案1】:

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

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

例如,您可以有一个本地 JavaScript 值,说明您看到的是哪条开始记录以及您的页面大小:

startRecord = 1;
pageSize = 10;

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

startRecord + pageSize, pageSize

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,但您无法从 JS 代码访问 $_SESSION 变量...您必须构建响应(xml、json 或纯文本),然后在 js on 成功方法中您需要解析该数据,并为 DIV> 构建新内容
    • 我完全理解先生,我已经编辑了我的代码以向您展示完整的 while 循环。我正在使用会话变量来改变我的查询处理方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多