Hallo,
ich arbeite mit WebServer.h und habe folgende Callback Funktionen
1 | server.on("/switchButton", switchButton); // Schalter darstellen
|
2 | server.on("/button",ButtonPress); // Reaktion auf Schalterdruck
|
Die erste ruft mir meine Seite mit den Buttons auf, die zweite soll auf
GET Anfragen der Buttons reagieren
1 | void ButtonPress() {
|
2 | if (server.args() > 0) {
|
3 | String nummer = server.arg("nummer");
|
4 | }
|
5 | // Verarbeitung der Numern
|
6 | .........
|
7 |
|
8 | /* Anfrage bestätigen */
|
9 | server.send(200, "text/html", "OK");
|
10 | }
|
Die Buttons werden so im HTML dargestellt, was der Server an den PC
sendet
<button class="button-green" onclick="sendRequest(1)">
Batteriebetrieb OFF</button>
Im Head des HTML steht
<script>
function sendRequest(value) {
var url = "http:xxxxx/button?nummer=" + encodeURIComponent(value);
var xhttp = new XMLHttpRequest();
xhttp.open("GET", url, true);
xhttp.onreadystatechange = function() {
if (xhttp.readyState === 4 && xhttp.status === 200) {
location.reload();
}
};
xhttp.send();
}
</script>
Wobei diese Funktion geklaut ist, ich verstehe nichts von Javascript bzw
nur wenig. Ist auch nicht Ziel meines Projektes da tiefer einzutauchen.
Sie soll den GET Req auslösen und warten bis die ein 200,OK erhält. Dann
die Seite neu laden.
Jedenfalls lösen die Buttons keine Reaktion aus ud Debuggen ist nicht
möglich, jedenfalls nicht mehr als eine LED blinken lassen, nur
funktioniert oder funktioniert nicht.
server.on("/button",HTTP_GETButtonPress);
ändert nichts. Es soll einfach nur ein GET request an den ESP32 gesendet
werden, der dann abgearbeitet und mit OK beantwortet wird. Ersetze ich
die onclick Methode durch einen href Link klappt es, nur dann wird die
Seite mit den Buttons verlassen und OK erscheint und das ist nicht Sinn
der Sache.
Wo könnte das Problem liegen?