jbaben: Variable in Javascript Funktion ausgeben

Hallo,

wie kann ich die Variable "xhr" bzw. "xhr.send()" in der folgenden Javascript-Funktion "updateOutput()" in der Konsole ausgeben ?

<script>
        function updateOutput(element) {
            var xhr = new XMLHttpRequest();
            if(element.checked){
                xhr.open("GET", "esp-outputs-action.php?action=output_update&id="+element.id+"&state=1", true);
                console.log( "Button checked " );
            }
            else {
                xhr.open("GET", "esp-outputs-action.php?action=output_update&id="+element.id+"&state=0", true);
                console.log( "Button unchecked " );
            }
            console.log( "xhr.send: " + ? );
            xhr.send();
        }

MfG

Juergen B.

  1. Tach!

    wie kann ich die Variable "xhr" bzw. "xhr.send()" in der folgenden Javascript-Funktion "updateOutput()" in der Konsole ausgeben ?

    xhr ist eine Variable, xhr.send() ist aber ein Funktionsaufruf. Was xhr beinhaltet, kannst du dir zwar anzeigen lassen, aber von xhr.send() hingegen nur den Rückgabewert. Letzteres ist aber sinnlos, weil der Rückgabewert dieser Funktion undefiniert ist.

                console.log( "xhr.send: " + ? );
                xhr.send();
    

    Man kann console.log() einfach mehrere mit Komma separierte Werte übergeben, die dann alle einzeln ausgegeben werden. Wenn du die Werte stattdessen mit + verknüpfst, wird dabei eine Typkonvertierung stattfinden, die vor allem bei komplexen Typen (wie Objekten), nicht mehr für Debuggingzwecke sinnvoll ist.

    dedlfix.

  2. Hallo jbaben,

    mit dedlfix' "geht, aber bringt nix" stellt sich nun die Frage: Was willst Du denn eigentlich erreichen?

    Die Antwort auf deinen AJAX-Request bekommst Du, indem Du auf dem xhr Objekt einen Eventhandler für das load Event registrierst. Guck in unser Wiki

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo,

      ich möchte wissen was mit "xhr.send()" gesendet wird. Mit console.log( "xhr.send: " + xhr.responseText );

      wird nichts auf der Konsole ausgegeben.

      MfG

      Juergen B.

      1. Hi,

        ich möchte wissen was mit "xhr.send()" gesendet wird. Mit console.log( "xhr.send: " + xhr.responseText ); wird nichts auf der Konsole ausgegeben.

        natürlich nicht - in responseText steht ja auch (wie der Name schon vermuten lässt) nicht das, was du senden willst, sondern die Antwort des Servers. Und auch das natürlich erst einige Zeit später.

        Live long and pros healthy,
         Martin

        --
        Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
      2. Hallo Juergen,

        ich möchte wissen was mit "xhr.send()" gesendet wird.

        das solltest du doch im Netzwerktab der Entwicklertools sehen können.

        Viele Grüße
        Robert

  3. Nur als Ergänzung: fetch() statt XMLHttpRequest.

    function updateOutput(element) {
      // HTTP-Anfrage senden, element.checked-Prüfung direkt in URL-Bau
      fetch('esp-outputs-action.php?action=output_update&id=" + encodeURIComponent(element.id) + "&state=' + (element.checked ? "1" : "0"))
    
      .then(function (response) {
          // wird ausgeführt, sobald irgendeine Antwort vom Server eintrudelt
          if (response.ok) {
              // kein Fehler, Serverantwort als Text holen
              return response.text();
          }
          // HTTP- und Netzwerkfehler ignoriert dieses Beispiel geflissentlich
      })
    
      .then(function (text) {
          // wird ausgeführt, sobald komplette Serverantwort als Text zur Verfügung steht
          console.log(text)
      });
    }