Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Paginieren Sie Datensätze bei Problemen auf Clientseite

Wie in meinen Kommentaren angegeben.

Sie könnten Folgendes tun:

$(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');
            }
        });
    });
});

Das obige wird Sie replizieren, indem Sie auf jeden der Paginierungslinks klicken.

Was ich als nächstes empfehlen würde, ist, den PHP-Code und den HTML-Code, der Ihre "Ergebnis"-Liste generiert, in eine separate Datei zu trennen.

Auf diese Weise können Sie auf der Seite, die die Ergebnisse anzeigt, einfach include('path-to-results-file.php'); verwenden was für Nicht-Ajax-Anfragen funktioniert, und dann könnten Sie Folgendes tun:

Prozess.php

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

Das Obige würde erkennen, ob eine Ajax-Anfrage gestellt wurde, und wenn ja, anstatt die gesamte Seite einschließlich der Ergebnisse anzuzeigen, werden einfach nur die Ergebnisse und die Paginierung angezeigt.

Aktualisiert, um eine bessere Erklärung hinzuzufügen

Unten ist ein SEHR einfaches Beispiel dafür, was ich meine.

Aktueller Prozess.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>

Neue 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>

Neuer Pfad-zur-Ergebnisdatei.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>

Jetzt... Wenn Sie zu process.php gehen normalerweise über Ihren Browser oder wenn Javascript deaktiviert ist. Es funktioniert einfach genauso wie jetzt ohne Javascript.

Wenn Sie zu process.php gehen und klicken Sie dann auf einen der Paginierungslinks (mit aktiviertem Javascript), process.php erkennt, dass Sie Ajax verwenden und sendet nur die Ergebnistabelle zurück.