Ankündigung

Einklappen
Keine Ankündigung bisher.

Feedback vom Post Request mit der Fetch Api an eine Php Datei

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Feedback vom Post Request mit der Fetch Api an eine Php Datei

    Nabend,

    mit folgendem Code starte ich ein Post Request an eine Php Datei :

    async function sendData(){
    let formData = new FormData(document.getElementById("form"));
    formData.append("customer[id]", document.getElementById("id").value);
    formData.append("customer[created]", document.getElementById("created").value);
    formData.append("customer[modified]", document.getElementById("modified").value);
    const response = await fetch(
    'addCustomerX.php',
    {
    method: 'POST',
    body: formData
    }
    );
    const feedback = await response.json();
    arr = Object.keys(feedback).map(key => feedback[key]);
    alert(arr);
    }
    In meiner PHP Datei checke ich ob die Pflichtfelder ausgefüllt wurden :

    PHP-Code:
    <?php

    $result
    ['requiredFields'] = array();

    foreach (
    $_POST['customer'] as $key =>$value) {
        
    $dataCustomer['customer'][$key] = TRIM($value);
    }

        if ( empty (
    $dataCustomer['customer']['company']))  {
            
    $result['requiredFields'][].= "company";
        }
        if ( empty (
    $dataCustomer['customer']['family_name']))  {
            
    $result['requiredFields'][].= "family_name";
        }

    echo 
    json_encode($result);
    In meiner Network Response meiner Php Datei erhalte ich folgenden String falls die beiden Felder nicht ausgefüllt wurden : {"requiredFields":["company","family_name"]}

    Diesen schicke ich mit json_encode zu meiner Javascript Datei, kommt dort aber als Objekt an und ich schaffe es nicht, daraus ein Array zu machen,
    welches ich durchlaufen kann, um dem User anzuzeigen, welche Pflichtfelder nicht ausgefüllt sind. Hab dies mit Object.keys versucht, hat aber nix gebracht.
    Ich erhalte somit zwar "company,family_name" als Ausgabe, ist aber immer noch kein Array welches ich durchlaufen kann.

    Jemand ne Idee ?

  • #2
    Setzte den Content-Type header:

    https://stackoverflow.com/questions/...m-a-php-script

    Kommentar


    • #3
      Ich hab jetzt in meiner Php Datei vor dem echo json_encode
      PHP-Code:
      header('Content-Type: application/json; charset=utf-8'); 
      gesetzt,
      bekomme jedoch genau die gleiche Response zurück :

      {"requiredFields":["company","family_name"]}

      und somit bleibt mein Problem dass ich keine Ahnung habe wie ich ein Array ausgeben kann mit den Werten "company" und "family_name"

      Kommentar


      • #4
        Wie sieht der HTTP-Response im Browser aus? Ist da wirklich der richtige Content-Type im Header?

        Kommentar


        • #5
          Connection:
          Keep-AliveContent-Length:
          44Content-Type:
          application/json; charset=utf-8Date:
          Tue, 30 May 2023 18:49:37 GMTKeep-Alive:
          timeout=5, max=100Server:
          Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.0X-Powered-By:
          PHP/7.3.0

          Kommentar


          • #6
            Willst du einfach nur auf feedback.requiredFields zugreifen? Weil im gezeigten Code machst du das nicht. Ich verstehe überhaupt nicht, wozu diese Object.keys Konstruktion hier überhaupt gut sein soll.

            Kommentar


            • #7
              Willst du einfach nur auf feedback.requiredFields zugreifen?
              Danke für den Denkanstoss ... beim Lesen dieser Zeile hats bei mir Click gemacht ... hab die ganze Zeit mit feedback[0][0] und recquiredFields[0][0] rumhantiert was nix brachte

              Das ist das was ich suchte :

              Code:
              let fields = [];
              
              for (let i = 0; i < feedback.requiredFields.length; i++) {
                fields[i] = (feedback.requiredFields[i]);
              }
              Danke !

              Kommentar


              • #8
                Der Code macht das selbe wie let fields = feedback.requiredFields. Wozu die for-Schleife?

                Kommentar


                • #9
                  jo haste Recht, geht auch ohne Schleife

                  Kommentar

                  Lädt...
                  X