I když mi trochu trvalo než jsem přišel na to jak to v te ESP8266 funguje a jak to odchytit, je to funkční
Děkují.
ESP8266 - Ovladaní přes web.
Moderátor: Moderátoři
By byl dalši dotaz. Co je špatně?
Funguje to.
Na ser. monitor se vypisuje value zaškrtnuteho radio.
Když ale zaškrtnu nějake radio a klknu na button, resetuje se mi stranka a všechny radio jsou prazdne.
https://circuits4you.com/2019/03/20/esp ... m-website/
Uplně dole.
Q1. Is it possible to stay on same page after pressing button?
ANS: Yes it is possible using server.sendHeader. Add these lines at the bottom of action page handler function.
server.sendHeader(“Location”, “/”);
server.send(302, “text/plain”, “Updated– Press Back Button”);[quote][/quote]
Kód: Vybrat vše
<form action="/index.php">
<input type="radio" id="R1" name="Rele" value="Rele1">
<label for="R1">Rele1</label><br>
<input type="radio" id="R2" name="Rele" value="Rele2">
<label for="R2">Rele2</label><br>
<input type="radio" id="R3" name="Rele" value="Rele3">
<label for="R3">Rele3</label><br>
<br>
<input type="submit" value="Submit">
</form>
Kód: Vybrat vše
void handleForm() {
String radio = server.arg("Rele");
Serial.println(radio);
server.sendHeader("Location", "/");
server.send(302, "text/plain", "Updated-- Press Back Button");
delay(500);
}
Na ser. monitor se vypisuje value zaškrtnuteho radio.
Když ale zaškrtnu nějake radio a klknu na button, resetuje se mi stranka a všechny radio jsou prazdne.
https://circuits4you.com/2019/03/20/esp ... m-website/
Uplně dole.
Q1. Is it possible to stay on same page after pressing button?
ANS: Yes it is possible using server.sendHeader. Add these lines at the bottom of action page handler function.
server.sendHeader(“Location”, “/”);
server.send(302, “text/plain”, “Updated– Press Back Button”);[quote][/quote]
Na tom není nic špatně, chová se to jak má. Po stisku tlačítka dojde k načtení stránky uvedené v atributu action v tagu form. Jestli jako odpověď posíláš stále stejné html, tak prostě nic zaškrtnuté nebude.
jak už jsem psal, zapni si v prohlížeči nástroje pro vývojáře. Pak se podívej na komunikaci prohlížeče a serveru. Bude ti to hned jasné.
Edit: a nějak mi není jasné, proč by se mělo změnit toto chování při použití dočasného přesměrovaní v hlavičce.
jak už jsem psal, zapni si v prohlížeči nástroje pro vývojáře. Pak se podívej na komunikaci prohlížeče a serveru. Bude ti to hned jasné.
Edit: a nějak mi není jasné, proč by se mělo změnit toto chování při použití dočasného přesměrovaní v hlavičce.
To že načitam stranku znovu jsem pochopil, ale nějak nechapu toto.
Ten script co jsi mi tu dal odesila GET
GET /zpracovani?vehicle1=1
Tedy takto.
Toto take načita tu stranku znovu a mužu zaškrtnout všechny checkboxy.Proč?
Až po kliknuti na Submit se vše vyresetuje.
To pak je lepši pořešit vše přes JavaScript.
Ten script co jsi mi tu dal odesila GET
GET /zpracovani?vehicle1=1
Tedy takto.
Kód: Vybrat vše
void handle_zpracovani() {
//String message = server.arg("vehicle1");
//Serial.println(message);
if (server.hasArg("vehicle1"))
{
String message = server.arg("vehicle1");
Serial.println(message);
}
server.sendHeader("Location", "/");
server.send(302, "text/plain", "Updated-- Press Back Button");
delay(500);
}
Až po kliknuti na Submit se vše vyresetuje.
To pak je lepši pořešit vše přes JavaScript.
Ten příklad, který jsem dával naposled, neposílá obsah tagu form pomocí submit. Takže díky tomu se stránka v prohlížeči nenačte znovu. Tlačítko submit neresetuje stránku, dojde k jejímu novému načtení ze serveru (ESP). Správné řešení by bylo načítat ze serveru správný obsah stránky. Tj. do posílaného HTML doplnit stavy checkboxů. Když to takhle neuděláš, tak vzápětí narazíš na další problém: při prvním zobrazení stránky nemusí stav checkboxů odpovídat reálnému stavu relé.
Dá se to řešit dvěma způsoby:
• u jednoduchých projektů generovat správné HTML (tento případ)
• u složitých projektů to dělám tak, že mám statický obsah stránky uložen v SPIFFS. Po jejím načtení prohlížečem (např. událost onLoad tagu body) načtu správný stav elementů. Díky tomu je velmi dobře oddělen vzhled stránky od jejího obsahu a pro změnu vzhledu není nutné překládat a nahrávat nový program do ESP.
Důležité je si uvědomit, že HTTP protokol neudržuje nikdy spojení mezi serverem a prohlížečem. Vždy je to dotaz a odpověď. Prostě je to bezestavový protokol se všemi (ne)výhodami. Ale jak už jsem psal, začni používat nástroje pro vývojáře, ulehčí ti to život
Dá se to řešit dvěma způsoby:
• u jednoduchých projektů generovat správné HTML (tento případ)
• u složitých projektů to dělám tak, že mám statický obsah stránky uložen v SPIFFS. Po jejím načtení prohlížečem (např. událost onLoad tagu body) načtu správný stav elementů. Díky tomu je velmi dobře oddělen vzhled stránky od jejího obsahu a pro změnu vzhledu není nutné překládat a nahrávat nový program do ESP.
Důležité je si uvědomit, že HTTP protokol neudržuje nikdy spojení mezi serverem a prohlížečem. Vždy je to dotaz a odpověď. Prostě je to bezestavový protokol se všemi (ne)výhodami. Ale jak už jsem psal, začni používat nástroje pro vývojáře, ulehčí ti to život
- pocitujlasku
- Příspěvky: 1757
- Registrován: 12 pro 2005, 01:00
este je tu jedna moznost, nieco medzi tym. dat ciste html, kde by sa js posielal ajaxom kazdu sekundu request, ktory by v jednoduchej forme vracal stavy. a potom uz len nastavit checkbox a pripadne aj farbu podla stavu. a rovnako by sa cez ajax odosielala zmena.
je to male, a mas do sekundy aktualny stav, ak by napr rele spinal niekto z ineho pocitaca.
je to male, a mas do sekundy aktualny stav, ak by napr rele spinal niekto z ineho pocitaca.
No vidis, a tak si sa bal