Отправка строки на веб-сервер ESP8266 через токен.-String не показывает обновленное значение - PullRequest
0 голосов
/ 19 сентября 2019

Библиотека: Pagebuilder.h

У меня есть веб-сервер ESP8266, где у меня есть форма с 6 входами.Данные в форме распечатываются в URL, когда я нажимаю «Отправить», а затем я использую server.arg, чтобы получить необходимые данные.Эти данные я сохраняю как строки для каждой отдельной текстовой строки.Затем я хочу снова отправить эту строку на веб-сервер, используя токены.Однако, когда я пытаюсь запустить код, поле для строки ничего не показывает на веб-сайте.Что действительно странно, так это то, что веб-сайт обновляется каждые 5 секунд, и это еще больше запутывает меня, почему значение Strings не отображается.В коде у меня уже есть 5 других токенов, которые возвращают правильное значение каждый раз.

Так я возвращаю данные из формы


 int h = 1;
  String team1Team = "test";
  String team1P1;
  String team1P2;
  String team2Team;
  String team2P3;
  String team2P4;


void handleForm() {

  String team1Team = Server.arg("team1-playing-as"); //this is the name of the diffrent from inputs
  String team1P1   = Server.arg("player1");
  String team1P2   = Server.arg("player2");
  String team2Team = Server.arg("team2-playing-as");
  String team2P3   = Server.arg("player3");
  String team2P4   = Server.arg("player4");

    if ((Server.args() == 6) && ( h == 1)) {
    Serial.println("Team 1: " + team1Team);
    Serial.println("Player 1: " + team1P1);
    Serial.println("Player 2: " + team1P2);
    Serial.println("Team 2: " + team2Team);
    Serial.println("Player 3: " + team2P3);
    Serial.println("Player 4: " + team2P4);
    delay(1000);
    h = 0;
    }
    if ((Server.args() == 0) && ( h == 0)) {
      h = 1;
    }
}

Как выможно увидеть, что String team1Team установлен на «тест», и именно это он возвращает на веб-сайте.Я сделал это, чтобы узнать, возвращала ли String что-либо или была какая-то ошибка, из-за которой String ничего не возвращала.

Так я отправляю String на веб-сайт

const char html[] = "<div class=\"jumbotron\"><div align=\"center\"><h1 class=\"display-4\" style=\"font-family: zetafonts-cinematografica-extrabold; font-size: 30px;\" > {{TEAM1}} {{SCORE}} {{SCORE2}}</h1></div></div>";

String scoreSend(PageArgument& args) { //this workes fine
  return score;
}
String scoreSend2(PageArgument& args) { //this works fine
  return score2;
}

String team1return(PageArgument& args) {  //this only returns "test"
  return team1Team;
}

// I have also tried this:

//String team1return(PageArgument& args) {  
//return Server.arg("team1-playing-as");
//}
// but same result.


PageElement body_elem(html, { {"SCORE", scoreSend} });
PageElement Score_2(html, { {"SCORE2", scoreSend2} });
PageElement Team1_elm(html, { {"TEAM1", team1return} });
PageElement CURRENT_GAME_ELEMENT(htmlPage2);
PageBuilder CURRENT_GAME("/current-game", { CURRENT_GAME_ELEMENT, body_elem, Score_2, Team1_elm});


void loop() {
WiFi.softAP("SSID", "PASS");
  delay(100);
CURRENT_GAME.insert(Server); 
 Server.begin(); 
}

void loop() {
handleForm();
Server.handleClient();
}

Решение может изменить способ, которым я объявляю строки, потому что похоже, что значение, которое строки получают в функции handleForm, является локальным, а содержимое этой функции недоступно издругие места, чем в функции.Таким образом, у меня также возникает вопрос, как мне объявить строки, чтобы они имели такую ​​же функциональность, но к ним можно было получить доступ из других мест, или просто сделать их глобальными.

...