AP 网络服务器 ESP8266 不工作(+ 串口监视器不打印)

AP Webserver ESP8266 doesn’t work (+ Serial monitor doesn’t print)

希望你一切顺利! 我开始学习如何在 ESP8266 上设置 WebServers,所以,我正在开发这个小项目来开始它。

基本上,它是一个网络服务器,我的 ESP8266 用作 AP,我在其中输入一个 HTML 表单,其中包含 6 个输入值,我将在我的 ESP8266 上接收这些值。

此时,我有两个大问题:

1st 也是最重要的是,服务器、HTML 脚本和 AP 总体上运行良好,因为一旦我将代码上传到 ESP8266 并连接到 AP,我就可以访问表单没有问题(http://192.168.4.1/)。当我输入值并单击“设置”提交它们时,问题就来了,因为它只是打印:未找到:/action_page.php

我不知道问题出在哪里,我尝试设置一些代码行以在找不到服务器时重定向访问,但它甚至没有访问主页。

2、我的串口监视器不打印这段代码中的任何一行,用其他代码,它打印正常,但这个不这样做。所以我不知道我做错了什么。

如果有任何建议,我将不胜感激,在此先感谢!这是我当前的代码:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

String backmsg = "";

const char MAIN_page[] PROGMEM = R"=====(<!DOCTYPE HTML><html>
<head>
  <title>ESP Input Form</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  
</head>

<h1  style='text-align:center;'> <br><br> WEBSERVER AP TEST <br><br> </h1>
<h2  style='text-align:center;'>1ST VERSION <br><br> </h2> 

<h3  style='text-align:center;'> 1ST SET: <br></h3>
<h3  style='text-align:center;'>
  <form action="/action_page.php">
      <label for="one">ONE:</label>
      <input type="number" id="one" name="one" min="1" max="99">

      <label for="two"> &thinsp;&thinsp;&thinsp;&thinsp; TWO:</label>
      <input type="number" id="two" name="two" min="1" max="99">

      <label for="thr"> &thinsp;&thinsp;&thinsp;&thinsp; THR:</label>
      <input type="number" id="thr" name="thr" min="1" max="99"><br><br>      
  </h3>   


<h3  style='text-align:center;'> 2ND SET: <br></h3>
<h3  style='text-align:center;'>  
      <label for="fou">FOU:</label>
      <input type="number" id="fou" name="fou" min="1" max="99">
  
      <label for="fiv"> &thinsp;&thinsp;&thinsp;&thinsp; FIV:</label>
      <input type="number" id="fiv" name="fiv" min="1" max="99">
  
      <label for="six"> &thinsp;&thinsp;&thinsp;&thinsp; SIX:</label>
      <input type="number" id="six" name="six" min="1" max="99"><br><br>  <br><br>
    
    <input type="submit" value="SET">  
    </form>
  </h3>
  
</body></html>
)=====";

String pageend = "<br><br><a href='/'><button class='button'>Regresar</button></a></body></html>";


//SSID and Password of your WiFi router
const char* ssid     = "abcdefg";
const char* password = "1234567890";

ESP8266WebServer server(80); //Server on port 80

//When the page is opened
void handleRoot() {
 String s = MAIN_page; //Read HTML contents
 server.send(200, "text/html", s); //Send web page
}

//When submit is pressed
void handleForm() {
 String onev = server.arg("one"); 
 String twov = server.arg("two");
 String thrv = server.arg("thr");
 String fouv = server.arg("fou");
 String fivv = server.arg("fiv"); 
 String sixv = server.arg("six");


 String eeee =  onev + ":" +  twov + ":" +  thrv;
 String ffff =  fouv + "/" +  fivv + "/" +  sixv;
Serial.println(eeee);
Serial.println(ffff);
backmsg = "1st SET: " + eeee + "<br><br>" + "2nd SET: " + ffff + "<br><br>";

 String s = "<a href='/'> Go Back </a>";
 server.send(200, "text/html", backmsg + pageend + s); //Send web page
}


//SETUP
void setup(void){
  Serial.begin(115200);
    delay(100); 
    WiFi.mode(WIFI_AP_STA); 
    WiFi.softAP(ssid,password); 
    Serial.print("Access Point is Created with SSID: ");
    Serial.println(ssid);
    Serial.print("Access Point IP: ");
    Serial.println(WiFi.softAPIP());

  server.on("/", handleRoot);      
  server.on("/action_page", handleForm); 
  server.begin();                  
  Serial.println("HTTP server started");
}


//LOOP
void loop(void){
  server.handleClient();       
}

您的 HTML 正在向 /action_page.php 提交表单,但您的 Web 服务器正在处理 /action_page。需要选择一个,用的时候要保持一致。

因为您实际上并没有使用 PHP 我建议将表格更改为:

  <form action="/action_page">