jquery ajax php: содержимое страницы не обновляется! - PullRequest
0 голосов
/ 24 мая 2011

я пытаюсь реализовать нумерацию страниц. Набор из 9 продуктов отображается одновременно. затем, после нажатия на кнопку «Просмотреть больше», содержимое div должно обновиться с помощью AJAX и показать следующий набор из 9 продуктов.

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>";
}

после того, как все товары будут получены и отображены, последний товар на странице сохраняется как переменная 'current' 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 голосов
/ 24 мая 2011

Правильный способ сделать это, чтобы клиентский код указывал с параметрами для вызова AJAX, какую «страницу» записей нужно извлечь.Используя такую ​​переменную сеанса, сервер не имеет представления о том, какие записи получать в какое время.Всегда будет возвращаться «следующий» результат.Поэтому каждый раз, когда вы загружаете эту веб-страницу, она будет обслуживать «следующий» набор записей.В результирующем наборе нет возможности вернуться на страницу назад.

По сути, вы должны хранить в локальных значениях JavaScript (или в скрытых элементах формы на странице, как бы вам ни хотелось хранить значение на странице) информацию отекущий набор результатов и ваш вызов AJAX будут отправлять необходимую информацию на сервер для возврата запрошенного набора результатов.

Например, у вас может быть локальное значение JavaScript, которое говорит, какую стартовую запись вы видите и свою страницу.size:

startRecord = 1;
pageSize = 10;

Затем, если вы нажмете кнопку «Далее», вызов AJAX предоставит серверу параметры, сообщающие ему, что выбрать:

startRecord + pageSize, pageSize

Вы хотите добавитьнемного логики, чтобы определить, находитесь ли вы на первой или последней странице, чтобы отключить функции «предыдущая» и «следующая», конечно.И вы можете сделать гораздо больше (переменные размеры страниц, фильтрация и поиск, сортировка и т. Д.), Но это основная суть.

0 голосов
/ 24 мая 2011

Похоже, вы не отправляете информацию из вызова ajax. в основном йой может получать значения из БД, но, похоже, не отправляет данные обратно на вызов. вы повторяете набор результатов в каком-то формате? Я не вижу этого в коде. в любом случае вы не можете получить доступ к переменным $ session из js ... они доступны на стороне сервера в php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...