• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

XMLHttpRequest и POST-запрос

Vovka

Member
Доброго времени суток!

Что-то не получается принять post-запрос с HTML-странички! Вот основные моменты:
HTML:
Код:
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function(){
  if(xhttp.readyState==4&&xhttp.status==200){alert(xhttp.responseText);}
};
xhttp.open("POST","192.168.1.5/test",true);
xhttp.send("t=1234567890");
ESP8266:
Код:
ESP8266WebServer HTTP(80);

void handleNotFound()
{
HTTP.send(200, "text/plain", "ERROR");
}

void Test()
{
HTTP.send(200, "text/plain", "OK");
}

HTTP.onNotFound(handleNotFound);
HTTP.on("/", handleRoot);    // Главная страница
HTTP.on("/test", HTTP_POST, Test );
В итоге выводит ERROR. Т.е. в esp не обрабатывается POST-запрос.
Как исправить?
 

Vovka

Member
в GET данные не влезут
А что за проблема когда POST-запрос? Функция есть, а почему то не срабатывает...
 

CodeNameHawk

Moderator
Команда форума
в GET данные не влезут
Что вы там такого передаете?
Учитываете, что
Пример GET-запроса. Информация передаётся прямо в заголовке.

GET /blog/?name1=value1&name2=value2 HTTP/1.1
Host: htmlacademy.ru

Пример POST-запроса. Информация передаётся в теле запроса:

POST /blog/ HTTP/1.1
Host: htmlacademy.ru
name1=value1&name2=value2
 

CodeNameHawk

Moderator
Команда форума
Я скопировал из инета, через передачу XML, примерно так
HTML:
const char Index_html[] PROGMEM = R"=====(
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="/style.css" type="text/css" />
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <title>Termometry</title>
  <script>
var xmlHttp=createXmlHttpObject();
function createXmlHttpObject(){
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}else{
xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
}
return xmlHttp;
}
function process(){
if(xmlHttp.readyState==0 || xmlHttp.readyState==4){
xmlHttp.open('PUT','xml',true);
xmlHttp.onreadystatechange=handleServerResponse;
xmlHttp.send(null);
}
setTimeout('process()',3010);
}
function handleServerResponse(){ if(xmlHttp.readyState==4 && xmlHttp.status==200){
xmlResponse=xmlHttp.responseXML;
xmldoc = xmlResponse.getElementsByTagName('podloga');
message = xmldoc[0].firstChild.nodeValue;
document.getElementById('Podloga').value=message;
xmldoc = xmlResponse.getElementsByTagName('kotlownia');
message = xmldoc[0].firstChild.nodeValue;
document.getElementById('Kotlownia').value=message;
xmldoc = xmlResponse.getElementsByTagName('podworz');
  
...
Если не ошибаюсь то это взято у Третьякова
https://esp8266-arduinoide.ru/ajax/
 
Последнее редактирование:
Сверху Снизу