Вот сам скетч: Спойлер Код (C++): #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> IPAddress apIP(192, 168, 1, 222); String _ssidAP = "WiFi_TEST"; String _passwordAP = ""; ESP8266WebServer HTTP(80); #include "HTTP_init.h" void setup() { Serial.begin(115200); Serial.println(""); Serial.println("WiFi connect..."); WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str()); HTTP_init(); Serial.println("WiFi connected!"); } void loop() { HTTP.handleClient(); delay(1); } Код (C++): void handleRoot(); void handleOut(); void handleNotFound(){ String message = "File Not Found\n\n"; message += "URI: "; message += HTTP.uri(); message += "\nMethod: "; message += (HTTP.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += HTTP.args(); // кол-во аргументов после '?' message += "\n"; for (uint8_t i=0; i<HTTP.args(); i++){ message += " " + HTTP.argName(i) + ": " + HTTP.arg(i) + "\n"; } HTTP.send(404, "text/plain", message); } void HTTP_init(void) { HTTP.onNotFound(handleNotFound); HTTP.on("/", handleRoot); HTTP.on("/out", handleOut); HTTP.begin(); } const char _htm_1[] PROGMEM = R"rawliteral( <!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <script language="javascript"> function outs(){ var xhttp=new XMLHttpRequest(); xhttp.open("GET","/out?t=Test 123",true);xhttp.send(); } </script> </head> <body> <br><br><br> <center><input type="submit" onClick="outs();" value=" SEND 'Test 123' "></center> </body></html> )rawliteral"; void handleRoot() { String s; Serial.println( "Get start HTML" ); s=FPSTR(_htm_1); HTTP.send(200, "text/html", s ); } void handleOut() { String t = HTTP.arg("t"); Serial.println( "handleOut(): " ); Serial.println( t ); } Перед заливкой прошивки, есп обнуляю нулевой прошивкой. Нажимаю кнопку сброса и один раз нажимаю кнопку на страничке в браузере. Всегда получаю вот такое: Спойлер WiFi connect... WiFi connected! handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 handleOut(): Test 123 Не пойму, почему одно нажатие на кнопку на страничке вызывает 9 вызовов функции handleOut()? Arduino IDE v1.8.13
У вас там связка: html код input вызывает JavaScript браузерный. В связке и кроется проблема. Ардуино среда здесь не при чем. Надо открывать книги по этим явлениям и пытаться понять как они работаютают.