2016-03-29 5 views
-1

Im sehr verwirrt auf, wie ich AJAX verwenden kann einen Teil einer Webseite neu laden, die PHP verwendet, um eine SQL-Abfrage auf meiner Datenbank auszuführen. Hier ist mein BeispielReload SQL-Abfrage mit AJAX/Jquery

<tbody> 
     <?php 

     $stmt = $DB_con->prepare("SELECT * FROM script_data WHERE email = :email OR username = :uname"); 
     $stmt->execute(array(':uname'=>$_SESSION['username'], ':email' => $_SESSION['email']));  
     $count = $stmt->rowCount(); 

     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 

       echo '<tr>'; 
       echo '<td>' . $row['script_ID'] . '</td>'; 
       echo '<td>' . gmdate("H:i:s", $row['runtime']) . '</td>'; 
       echo '<td>' . $row['status'] . '</td>'; 
       echo '<td>' . $row['script_name'] . '</td>'; 
       echo '<td>' . $row['script_version'] . '</td>'; 
       echo '</tr>'; 

        } 

        if($count == 0) { 
        $bot_is_running = false; 
        echo '<tr>'; 
        echo '<td>No active Bots</td>'; 
        echo '</tr>'; 
         } 

         ?> 
    </tbody> 

Das ist einfach Abrufen von Informationen aus einer Datenbank und stellt sie als Tabelle mein Problem ist, dass es alle 5 Sekunden oder so für die aktuellsten Daten aufgefrischt werden muss (meine Datenbank ständig aktualisiert mit neuen Daten aus einer Java-Anwendung)

irgendwelche Ideen, wie kann ich das tun?

+0

jQuery hat eine '.load()' Funktion, die für Sie nützlich sein könnte: http://api.jquery.com/load/ – David

+0

JS hat eine 'setInterval()' Funktion, die Sie mit der Funktion @ verwenden können David erwähnt oben, um ein zeitgesteuertes Ereignis zu erstellen. –

Antwort

1

Vermutlich befindet sich dieser Seiteninhalt auf einer Seite, die in irgendeiner Weise angefordert werden kann? Nennen wir es zum Beispiel myPage.php. Sie können in jQuery the .load() function verwenden, um eine Seite vom Server abzurufen und den Inhalt in ein Element zu platzieren. Zum Beispiel:

$('tbody').load('myPage.php tbody tr'); 

Dies würde den Inhalt der tbody in der aktuellen Seite mit den von der angeforderten Seite zurück tr Elementen ersetzen.

Um dies "alle 5 Sekunden" zu tun, würden Sie etwas wie setInterval() verwenden. Zum Beispiel:

setInterval(function() { 
    $('tbody').load('myPage.php tbody tr'); 
}, 5000); 

Hinweis: Fetching Seiteninhalte vom Server ist nicht der schnellste Weg, um Dinge zu tun, also wenn du gehst wieder Laden des viel (alle paar Sekunden), dann werden Sie könnten die Dinge ein wenig beschleunigen. Erstellen Sie eine separate PHP-Seite, die nur die aktualisierte Daten anstelle einer vollständig gerenderten Seite zurückgibt. Verwenden Sie dann anstelle von .load() eine .get(), um die JSON-Daten von dieser Seite abzurufen und das bereits vorhandene clientseitige Markup zu aktualisieren.

Es gibt viele Möglichkeiten, das zu tun, je nachdem, welche Technologien Sie verwenden. Das Holen der ganzen Seite sollte Arbeit sein, aber ich empfehle Ihnen, in eine strukturiertere Weise zu schauen, dieses sogar gerade als eine Lernerfahrung zu tun.

+0

Ja, das ist genau das, was ich brauchte, um es in die Praxis umzusetzen und zu sehen, ob es funktioniert! –