Рубен
Member
Мой вопрос: почему не вызывается функция в html? Пожалуйста, подскажите, кто понимает.
Исходные данные:
Arduino IDE 1.6.5; DevKit ESP8266 12E;
Взял за основу скетч (см. Спойлер: web_softAP). //Я ранее скачал более полный, но не смог сейчас найти.//
Сделал свой. Показываю сокращенный рабочий вариант, где нажатие на кнопку должно автоматически менять состояние checkbox и также, как и checkbox, формировать запрос на ESP8266.
Сам скетч еще сырой и вопрос не в этом. Все загружается и мой смартфон видит прописанную в скетче html страничку, но не вызываются функции через "on_Click". Для убедительности я вписал alert(x); после первой строки в функции function check_par(..).
Исходные данные:
Arduino IDE 1.6.5; DevKit ESP8266 12E;
Взял за основу скетч (см. Спойлер: web_softAP). //Я ранее скачал более полный, но не смог сейчас найти.//
Сделал свой. Показываю сокращенный рабочий вариант, где нажатие на кнопку должно автоматически менять состояние checkbox и также, как и checkbox, формировать запрос на ESP8266.
[HASHTAG]#include[/HASHTAG] <ESP8266WiFi.h>
[HASHTAG]#include[/HASHTAG] <ESP8266WebServer.h>
const char *ssid = "AndroidRU"; //
const char *password = "snnh8953";
String form1 = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />\
<html>\
<head>\
<title>ESP8266_ruben</title>\
<style>\
body {\
background-color: [HASHTAG]#cccccc[/HASHTAG];\
font-family: Arial, Helvetica, Sans-Serif;\
Color: [HASHTAG]#000088[/HASHTAG];\
}\
</style>\
<script type= 'text/javascript'>\
var xmlhttp=getXmlHttp();\
var str_URL = '';\
var xmlhttp = getXmlHttp();\
function check_par(id_cb)\
{\
var x = id_cb.id;var str_io = 'cb' + x;\
alert(x);\
document.getElementById(str_io).checked =!document.getElementById(str_io).checked;\
trans_par(str_io);\
}";
//Продолжение
String form2 = "function trans_par(id_cb){\
if (document.getElementById(id_cb).checked)\
{\
str_URL='=1';\
}\
else\
{\
str_URL='=0';\
}\
str_URL='newpage?' + id_cb + str_URL;\
alert(str_URL);\
xmlhttp.open('GET',str_URL,true);\
xmlhttp.onreadystatechange = function()\
{\
if(xmlhttp.readyState == 4)\
{\
if(xmlhttp.status == 200)\
{\
alert(xmlhttp.responseText);\
}\
}\
}\
xmlhttp.send(null);\
}</script>\
</head>\
<body>\
<h1>Hello!</h1>\
<p> </p>\
<form>\
<input type='checkbox' id='cb1' checked='checked' onclick='trans_par("cb1"'>\
<input type='button' id='1' value='синий' onclick='check_par(this)' style='width:96px'>\
</form>\
</body>\
</html>";
ESP8266WebServer server(80);
const int gpio = 2;
void handle_gpio2() {
int state = server.arg("cb1").toInt(); //compareTo("checked");
digitalWrite(gpio, state);
//server.send(200, "text/plain", String("LED is now ") + ((state)?"on":"off"));
}
void setup(void) {
Serial.begin(115200);
Serial.println("");
pinMode(gpio, OUTPUT);
WiFi.softAP(ssid);
// Wait for connection
/*
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
*/
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.softAPIP());
// Set up the endpoints for HTTP server
server.on("/", []() {
server.send(200, "text/html", form1+form2);
});
server.on("/newpage", handle_gpio2);
// Start the server
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
// check for incomming client connections frequently in the main loop:
server.handleClient();
}
[HASHTAG]#include[/HASHTAG] <ESP8266WebServer.h>
const char *ssid = "AndroidRU"; //
const char *password = "snnh8953";
String form1 = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />\
<html>\
<head>\
<title>ESP8266_ruben</title>\
<style>\
body {\
background-color: [HASHTAG]#cccccc[/HASHTAG];\
font-family: Arial, Helvetica, Sans-Serif;\
Color: [HASHTAG]#000088[/HASHTAG];\
}\
</style>\
<script type= 'text/javascript'>\
var xmlhttp=getXmlHttp();\
var str_URL = '';\
var xmlhttp = getXmlHttp();\
function check_par(id_cb)\
{\
var x = id_cb.id;var str_io = 'cb' + x;\
alert(x);\
document.getElementById(str_io).checked =!document.getElementById(str_io).checked;\
trans_par(str_io);\
}";
//Продолжение
String form2 = "function trans_par(id_cb){\
if (document.getElementById(id_cb).checked)\
{\
str_URL='=1';\
}\
else\
{\
str_URL='=0';\
}\
str_URL='newpage?' + id_cb + str_URL;\
alert(str_URL);\
xmlhttp.open('GET',str_URL,true);\
xmlhttp.onreadystatechange = function()\
{\
if(xmlhttp.readyState == 4)\
{\
if(xmlhttp.status == 200)\
{\
alert(xmlhttp.responseText);\
}\
}\
}\
xmlhttp.send(null);\
}</script>\
</head>\
<body>\
<h1>Hello!</h1>\
<p> </p>\
<form>\
<input type='checkbox' id='cb1' checked='checked' onclick='trans_par("cb1"'>\
<input type='button' id='1' value='синий' onclick='check_par(this)' style='width:96px'>\
</form>\
</body>\
</html>";
ESP8266WebServer server(80);
const int gpio = 2;
void handle_gpio2() {
int state = server.arg("cb1").toInt(); //compareTo("checked");
digitalWrite(gpio, state);
//server.send(200, "text/plain", String("LED is now ") + ((state)?"on":"off"));
}
void setup(void) {
Serial.begin(115200);
Serial.println("");
pinMode(gpio, OUTPUT);
WiFi.softAP(ssid);
// Wait for connection
/*
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
*/
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.softAPIP());
// Set up the endpoints for HTTP server
server.on("/", []() {
server.send(200, "text/html", form1+form2);
});
server.on("/newpage", handle_gpio2);
// Start the server
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
// check for incomming client connections frequently in the main loop:
server.handleClient();
}
Может кому пригодиться: для того, чтобы разместить файл большего размера, я ввел несколько переменных String form1, String form2 и т. д. Потом их суммирую server.send(200, "text/html", form1+form2);
Повторю вопрос: почему не вызывается функция? Пожалуйста, подскажите, кто понимает.
Последнее редактирование: