Padarom
Neues Mitglied
Hallo,
ich habe eine Seite, die zu Anfang mittels einer PHP-Datenbankabfrage gefüllt wird (es werden aus einer MySQL-Datenbank alle Zeilen gelesen und diese werden in einer Tabelle im HTML-Code geschrieben). Alle 10 Sekunden wird dann über ein Javascriptinterval die jQuery-get Methode (Also AJAX) aufgerufen, was ein Script ausführt, welches den Inhalt der Datenbank erneut ausliest und ausgibt. Die Rückgabe dieser Funktion wird dann als neuer HTML-Wert für die Tabelle verwendet.
In dieser Tabelle sind einige Buttons. Werden diese geklickt, werden sie ein-/ausgeschaltet und eine weitere PHP-Datei aufgerufen, welche über shell-Commands 433MHz Funksteckdosen steuert.
Sinn der Aktualisierung der Seite ist die Aktualität der Buttonwerte. Diese sollen stets den gleichen Status haben, wie die Funksteckdose (ob diese ein- oder ausgeschaltet ist, wird ebenfalls in der Datenbank vermerkt).
Nun habe ich folgendes Problem:
Sobald die Seite das erste Mal über AJAX aktualisiert wird, funktionieren die Buttons nicht mehr. Javascript führt die click()-Funktion nicht mehr aus. Warum ist das so?
Problem 2:
Der Inhalt der Table wird aktuell gelöscht und durch die neue ersetzt. Ist es mir über jQuery (UI?) o.Ä. möglich, dass neu erscheinende Werte eingeblendet werden, also dass ein fade hinzukommt, anstatt dass die neue Zeile (bzw. der geänderte Buttonwert/die Farbe) einfach hinzugefügt wird? Das würde dem ganzen einen kleinen Abschliff geben.
Ich hoffe, ihr habt verstanden was ich meine.
Danke im Voraus
Padarom
ich habe eine Seite, die zu Anfang mittels einer PHP-Datenbankabfrage gefüllt wird (es werden aus einer MySQL-Datenbank alle Zeilen gelesen und diese werden in einer Tabelle im HTML-Code geschrieben). Alle 10 Sekunden wird dann über ein Javascriptinterval die jQuery-get Methode (Also AJAX) aufgerufen, was ein Script ausführt, welches den Inhalt der Datenbank erneut ausliest und ausgibt. Die Rückgabe dieser Funktion wird dann als neuer HTML-Wert für die Tabelle verwendet.
In dieser Tabelle sind einige Buttons. Werden diese geklickt, werden sie ein-/ausgeschaltet und eine weitere PHP-Datei aufgerufen, welche über shell-Commands 433MHz Funksteckdosen steuert.
Sinn der Aktualisierung der Seite ist die Aktualität der Buttonwerte. Diese sollen stets den gleichen Status haben, wie die Funksteckdose (ob diese ein- oder ausgeschaltet ist, wird ebenfalls in der Datenbank vermerkt).
Nun habe ich folgendes Problem:
Sobald die Seite das erste Mal über AJAX aktualisiert wird, funktionieren die Buttons nicht mehr. Javascript führt die click()-Funktion nicht mehr aus. Warum ist das so?
Code:
$(document).ready(function(){
$(".toggle").click(function() {
if($(this).hasClass("ein")) {
$(this).removeClass("ein");
$(this).html("aus");
$.post("various/executeCode.php", {transmitted:true, id:$(this).attr('id'), toggle:'0'}, function(result) {
});
} else {
$(this).addClass("ein");
$(this).html("ein");
$.post("various/executeCode.php", {transmitted:true, id:$(this).attr('id'), toggle:'1'}, function(result) {
});
}
});
});
window.setInterval("reloadPage()", 5000);
function reloadPage()
{
$.get('various/reloadPage.php', function(data) {
$("#content").html(data);
});
}
PHP:
$stmt = $dbh->query("SELECT * FROM `funksteckdosen`");
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($row as $r)
{
echo "<tr>";
echo " <td>" . $r['name'] . "</td>";
echo " <td><button id='" . $r['id'] . "' class='toggle" . ($r['toggle'] == 0 ? "" : " ein") . "'>"
. ($r['toggle'] == 0 ? "aus" : " ein") . "</button></td>";
echo "</tr>";
}
Problem 2:
Der Inhalt der Table wird aktuell gelöscht und durch die neue ersetzt. Ist es mir über jQuery (UI?) o.Ä. möglich, dass neu erscheinende Werte eingeblendet werden, also dass ein fade hinzukommt, anstatt dass die neue Zeile (bzw. der geänderte Buttonwert/die Farbe) einfach hinzugefügt wird? Das würde dem ganzen einen kleinen Abschliff geben.
Ich hoffe, ihr habt verstanden was ich meine.
Danke im Voraus
Padarom
Zuletzt bearbeitet: