sql >> Databasteknik >  >> RDS >> Mysql

Paginera poster på klientsidans problem

Som det står i mina kommentarer.

Du kan göra följande:

$(document).ready(function()
{
    $('.paginate').live('click', function(e)
    {
        e.preventDefault();
        var btnPage = $(this);
        $.ajax(
        {
            url : btnPage.attr('href'),
            success : function(resp)
            {
                // replace current results with new results.
                $('#project_section').html(resp);
            },
            error : function()
            {
                window.location.href = btnPage.attr('href');
            }
        });
    });
});

Ovanstående kommer att replikera dig genom att klicka på var och en av sideringslänkarna.

Vad jag skulle råda dig att göra härnäst är att separera PHP-koden och HTML som genererar din "resultatlista" i en separat fil.

På så sätt, på sidan som visar resultaten, kan du helt enkelt använda include('path-to-results-file.php'); som kommer att fungera för icke-ajax-förfrågningar och sedan kan du göra:

Process.php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    include('path-to-results-file.php');
    die();
}

Ovanstående skulle upptäcka om en ajax-begäran har gjorts och i så fall, istället för att visa hela sidan inklusive resultaten, kommer den helt enkelt bara att visa resultaten och sidnumren.

Uppdaterad för att inkludera en bättre förklaring

Nedan är ett MYCKET enkelt exempel på vad jag menar.

Aktuell process.php

    <?
    // currently contains all of the code required
    // to query the database etc.
?>
<html>
<head>...</head>
<body>
    <!-- header content -->
    <table>
    <?
        // currently contains all of the code required to display
        // the results table and pagination links.
    ?>
    </table>
    <!-- footer content -->
</body>
</html>

Ny process.php

<?
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
    {
        include('path-to-results-file.php');
        die();
    }
?>
<html>
<head>...</head>
<body>
    <!-- header content -->
    <? include('path-to-results-file.php'); ?>
    <!-- footer content -->
</body>
</html>

Ny path-to-results-file.php

<?
    // currently contains all of the code required
    // to query the database etc.
?>
<table>
<?
    // currently contains all of the code required to display
    // the results table and pagination links.
?>
</table>

Nu... När du går till process.php normalt via din webbläsare, eller när javascript är inaktiverat. Det kommer helt enkelt att fungera på samma sätt som det gör utan Javascript nu.

När du går till process.php och klicka sedan på en av pagineringslänkarna (med javascript aktiverat), process.php kommer att upptäcka att du använder Ajax och bara skicka tillbaka resultattabellen.




  1. PG::UndefinedTable:FEL:Relationen existerar inte med en korrekt Rails-namngivning och -konvention

  2. Rails:Hur man delar skriv/läs-fråga över master/slav-databas

  3. Hur kan jag ansluta till en extern databas från en SQL-sats eller en lagrad procedur?

  4. Syntaxfel i slutet av inmatning i PostgreSQL