ESP32 received as Json

OP #7664951
Lesenswert?

Hallo Ich habe fogenden Code mit PlatformIO

void handleRequest(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { // Handle the incoming data if (request->method() == HTTP_POST) {

1
 Serial.printf("Got Ajax 1 %d - %d - %d Content Type = %s",  len, index, total, request->contentType().c_str());
2
 
3
if (request->contentType() == "application/json") 
4
 {
5

6
  // Handle JSON data
7
  StaticJsonDocument<200> doc;
8
  DeserializationError error = deserializeJson(doc, data, len);
9

10
  if (error) {
11
    // Handle deserialization error
12
    return;
13
  }
14
  
15
  // Access the JSON data
16
  int key1 = doc["key1"];
17
  int key2 = doc["key2"];
18
  // Process the data as needed
19
  Serial.printf("Got Ajax Json %d - %d - %d \n",  key1, key2, total);
20
}

if (request->contentType() == "text/plain") {

1
  // Handle JSON data
2
  StaticJsonDocument<200> doc;
3
  DeserializationError error = deserializeJson(doc, data, len);

Serial.print("Get Json");

1
  if (error) {
2
     Serial.print("Json Error");
3
    return;
4
  }
5
  
6
  // Access the JSON data
7
  int key1 = doc["key1"];
8
  int key2 = doc["key2"];
9
  // Process the data as needed
10
  Serial.printf("Got Ajax 2 %d - %d - %d \n",  key1, key2, total);
11
  Serial.println( " <-----");

Mein Java Script ist folgender

function toggleCheckbox(element, Value) { var myElement = document.getElementById(Value);
var xhr = new XMLHttpRequest(); xhr.open("POST", "/your-endpoint", true);

if(element.checked){ myElement.innerHTML = "On"; var value2 = true;

} else { myElement.innerHTML = "Off";

var value2 = false; }

var value1 = element.id; var data = JSON.stringify({ key1: value1, key2: value2 }); xhr.send(data); }

Ich habe im Code von mir aus den Code in main.cpp eingefügt if (request->contentType() == "text/plain") weil der request erkennt nicht das es sich um ein JSon Objekt handelt.

Sorry das ich den Code nicht formatiere, ich weiß nicht mehr wie das ging. Danke für das Forum aber es wäre hilfreich es ein wenig moderner zu gestalten. Ich bin schon älter und vergesse.

Gast #7664988
Lesenswert?

Martin M. schrieb:

Sorry das ich den Code nicht formatiere, ich weiß nicht mehr wie das ging.

Das steht doch direkt über dem Text-Eingabefeld!

Da du im Javascript keinen konkreten Document Type an den Server (ESP) sendest, solltest du dort beim Empfang auch keinen bestimmten Document Type erwarten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren