Forum: Mikrocontroller und Digitale Elektronik ESP32 received as Json


von Martin M. (ats3788)


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) {

     Serial.printf("Got Ajax 1 %d - %d - %d Content Type = %s",  len, 
index, total, request->contentType().c_str());

    if (request->contentType() == "application/json")
     {

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

      if (error) {
        // Handle deserialization error
        return;
      }

      // Access the JSON data
      int key1 = doc["key1"];
      int key2 = doc["key2"];
      // Process the data as needed
      Serial.printf("Got Ajax Json %d - %d - %d \n",  key1, key2, 
total);
    }

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

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

 Serial.print("Get Json");

      if (error) {
         Serial.print("Json Error");
        return;
      }

      // Access the JSON data
      int key1 = doc["key1"];
      int key2 = doc["key2"];
      // Process the data as needed
      Serial.printf("Got Ajax 2 %d - %d - %d \n",  key1, key2, total);
      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.

von Steve van de Grens (roehrmond)


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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.