jQuery ajax() -> Javascript Variable

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Matzu
    Extension Master
    • 21.02.2017
    • 123

    #1

    jQuery ajax() -> Javascript Variable

    Hallo,
    ich habe eine Abfrage mit der ich Werte aus dem Miniserver abfrag und ich diese dann in einer eigenen html Visu Anzeige. Gleich vor ab. Ich bin kein großer Programmierer, also bitte seid gnädig.
    Die Codezeilen sind nicht von mir und ich krieg schon immer vielen hin durch ausprobieren und basteln, aber diesmal komm ich nicht weiter.

    Ich hab so eine Ajax-Abfrage, hier wird der aktuelle Stromwert geholt und der Status der Alarmanlage abgefragt.
    Wie bekomm ich denn einen sauberen Wert ob und welcher Modus der Alarmanlage aktiv ist. Dieses Wert hätte ich dann gern in einer Javascript Variablen, dass ich anhand dieser meinen Body background der HTML-Datei farbig machen kann.


    HTML-Code:
    function UpdateSecure(){
    $.ajax({
    url: "loxone-get-secure.php",
    type: "POST",
    success: function(data)
    {
    var response = $.parseJSON(data);
    document.getElementById('StromAktuell').innerHTML = response.StromAktuell;
    document.getElementById('Alarm').src = response.Alarm;
    document.getElementById('Alarmdaheim').src = response.Alarmdaheim;
    
    }
    });
    
    }
    UpdateSecure();
    setInterval(UpdateSecure, 1500);


    Die Werte kommen von hier:

    PHP-Code:
    <?php
    
    //Pfad zur Config Datei mit Zugangsdaten
    include "config.php";
    
    //Datum und Uhrzeit
    //$date = date("d\.m\.y - G:i:s");
    
    $StromAktuell = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Aktueller Stromverbrauch');
    
    $xmlStatusalarm = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Alarm aktiv/state');
    ($xmlStatusalarm['value'] > 0) ? $Alarm = 'alarm.png' : $Alarm = 'check.png';
    
    $xmlStatusalarmdaheim = simplexml_load_file('http://'. $Username .':'. $Password .'@'. $Miniserver .'/dev/sps/io/Alarmdaheim aktiv/state');
    ($xmlStatusalarmdaheim['value'] > 0) ? $Alarmdaheim = 'alarmdaheim.png' : $Alarmdaheim = 'check.png';
    
    
    //Array aufbauen
    $response = array (
    
    "StromAktuell" => (string)$StromAktuell["value"],
    "Alarm" => $Alarm,
    "Alarmdaheim" => $Alarmdaheim,
    
    );
    
    //Ausgabe Array in JSON Format
    print_r(json_encode($response));
    
    ?>

    So würde ich dann gern die Hintergundfarbe ändern

    HTML-Code:
    if (StatusAlarmanlage == "Alarmdaheim")
    {
    document.body.style.backgroundColor = 'green';
    }


    Vielen Dank vorab schon mal.
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11250

    #2
    Was geht denn nicht?
    Wenn du im PHP den richtigen Response Header (Content-Type: application/json) setzt, steht in data bereits ein Objekt - du brauchst kein JsonParse mehr.

    Den Wert bekommst du dann ganz einfach per
    data.StromAktuell
    data.Alarm
    usw.

    Der XML-Response von Loxone ist nicht immer valide. Wenn das simplexml_load_file nicht funktionieren sollte (Response leer oder Exception), dann mit String-Operationen oder RegEx die Werte aus dem invaliden XML klauben.

    Mit /dev/sps/io/~Name~/all bekommst du mehr Werte von den Bausteinen. Probier mal im Browser.
    Zuletzt geändert von Christian Fenzl; 10.06.2020, 08:27.
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar

    • Matzu
      Extension Master
      • 21.02.2017
      • 123

      #3
      Alter Verwalter...

      Christian Fenzl Du sprichst eine andre Sprache als ich , ich hab wenig bis nichts geblickt


      Ich will wie gesagt einfach nur die Body-Hintergrundfarbe der HTML Datei farbig gestalten und dies eben Anhand von dem Status der Alarmanlage

      Mit "document.body.style.backgroundColor = 'green'; " Kann ich die Farbe setzen, Nun brauch ich aber noch die korrekte Abfrage.

      Ich hab schon alles mögliche Versucht die Werte data.Alarm usw mit alert(); mir mal auszugeben und zu schauen was da wirklich kommt. Kommt aber halt nix

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11250

        #4
        Loxone Rest2Ajax. GitHub Gist: instantly share code, notes, and snippets.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • Matzu
          Extension Master
          • 21.02.2017
          • 123

          #5
          Wow, das sieht ja schon mal top aus. Vielen Dank schon mal.

          Ich kanns leider momentan nicht ausprobieren, aber wenn ich das richtig sehe, dann tust du ja die Hintergrundfarbe der <div> ändern, oder?
          Funktioniert dies mit dem ganzen <body> denn auch?

          Kommentar

          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11250

            #6
            Natürlich.
            Siehe Selectors von jQuery, und CSS.
            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar

            • Matzu
              Extension Master
              • 21.02.2017
              • 123

              #7
              Gestern Abend bin ich nun endlich wieder dazugekommen das ganze zu testen. und mit deiner Hilfe und deine Tipps hab ich es nun wunderbar hinbekommen.

              Besten Dank Christian Fenzl

              Kommentar

              Lädt...