• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] JavaScript Function wird nicht vollständig ausgeführt

dieterwo

New member
Hi,

ich habe ein Script mit Ajax um Daten laufend zu aktualisieren.
Vom Server bekomme ich auch alles.
Innerhalb des Scripts sollen alle Werte in die Seite übertragen werden.
Aber nur die Zuweisung funktioniert. Der Wert Response.puffer wird richtig in IdPuffer eingetragen.
Hier mal mein Script
Code:
    <script type="text/javascript">
        function updateDataHeizung() {
            $.ajax({
                url: "updatedataheizung.php",
                type: "POST",
                success: function (data) {
                    var response = $.parseJSON(data);
                    document.getElementById('IdPuffer').innerHTML = response.puffer;
                    document.getElementById('IdPufferOben').innerHTML = response.pufferoben;
                    alert(response.pufferoben);
                    document.getElementById('IdPufferMitte').innerHTML = response.puffermitte;
                    document.getElementById('IdPufferUnten').innerHTML = response.pufferunten;
                    document.getElementById('IdKessel').innerHTML = response.kessel;
                    document.getElementById('IdKesselTemp').innerHTML = response.kesseltemp;
                    document.getElementById('IdAbgasTemp').innerHTML = response.abgastemp;
                    document.getElementById('IdRcklaufTemp').innerHTML = response.rcklauftemp;
                    document.getElementById('IdPumpe1').innerHTML = response.pumpe1;
                    document.getElementById('IdPumpe2').innerHTML = response.pumpe2;
                    document.getElementById('IdPufferpumpe').innerHTML = response.pufferpumpe;
                    document.getElementById('IdTuer').innerHTML = response.tuer;
                }
            });
        }
        updateDataHeizung();
        setInterval(updateDataHeizung, 5000);
    </script>

Die updatedataheizung.php:
PHP:
 <?php
       $response = parse_ini_file ('heizung.txt'); 
       print_r(json_encode($response));
     ?>

Ich bekomme von der updatedataheizung.php auch alle Daten, das habe ich überprüft.
Woran kann es liegen, dass mein Script, oder genauer genommen die Funktion nicht vollständig ausgeführt wird?
Der alert wird nicht mehr angezeigt. Wenn ich ihn eine Zeile höher setze wird er angezeigt.

Danke für eure Hilfe.
Gruß
Dieter
 
Zuletzt bearbeitet von einem Moderator:
Zum einen kannst du im .ajax()den Parameter dataType: 'json', verwenden, das spart dir das var response = $.parseJSON(data); und du kannst direkt auf das Object data zugreifen.
Und zum anderen wäre die Frage, ob du in der Konsole (F12) eine Meldung hast und mit welchem Browser du testest.
Ich vermute, dass response.pufferoben undef ist.
 
Danke für die Antwort.

Der erste Hinweis werde ich ausprobieren. Aber er hat (nehme ich mal an) keinen Einfluß auf die Funktion als solches?

Wenn ich mein PHP-Script aufrufe, dann bekomme ich das zurück:
{"puffer":"60 %","pufferoben":"75 Grad","puffermitte":"70 Grad","pufferunten":"65 Grad","kessel":"Heizt an","kesseltemp":"53 Grad","abgastemp":"121 Grad","rcklauftemp":"36 Grad","pumpe1":"an","pumpe2":"aus","pufferpumpe":"0 %","tuer":"geschlossen"}

ich dachte, durch das parseJSON bekomme ich das quasi als Array zurück.
Und damit hätte ich sowas wie ein Object, wo ich dann über Response.puffer (usw) automatisch drauf zugreifen kann.

(Sorry, ich programmiere sonst nur Pascal und hab mit JavaScript so gar keine Erfahrung).

In der Konsole von mein IE10 bekomme ich :

SCRIPT5007: Die Eigenschaft "innerHTML" eines undefinierten oder Nullverweises kann nicht festgelegt werden.
127.0.0.1, Zeile 26 Zeichen 21

Das würde ja für mich erst mal bedeuten, dass er das Object IdPufferoben nicht findet.
Ist aber vorhanden, genauso wie IdPuffer, die er ja findet.
HTML:
                <li data-role="collapsible" data-corners="false" data-shadow="false" data-iconpos="right">
                    <h1>Pufferladung<span class="ui-li-count"><div id="IdPuffer">n/a</div></span></h1>
                   <ul data-role="listview" data-corners="false" data-shadow="false" data-inset="true">
                        <li>Puffer Oben<span class="ui-li-count"><div id="IdPufferoben">n/a</div></span></li>
                        <li>Puffer Mitte<span class="ui-li-count"><div id="IdPuffermitte">n/a</div></span></li>
                        <li>Puffer Unten<span class="ui-li-count"><div id="IdPufferunten">n/a</div></span></li>
                    </ul>
                </li>

Oder ist es ein Problem, dass die Id's von der Namensgebung zu ähnlich sind?

- - - Aktualisiert - - -

Ich hab mittlerweile gelesen, dass ein <DIV> nicht innerhalb eine <SPAN> gesetzt werden darf.
Ich habe das geändert.
HTML:
                <li data-role="collapsible" data-corners="false" data-shadow="false" data-iconpos="right">
                    <h1>Pufferladung<span id="IdPuffer" class="ui-li-count">n/a</span></h1>
                   <ul data-role="listview" data-corners="false" data-shadow="false" data-inset="true">
                        <li>Puffer Oben<span id="IdPufferoben" class="ui-li-count">n/a</span></li>
                        <li>Puffer Mitte<span id="IdPuffermitte" class="ui-li-count">n/a</span></li>
                        <li>Puffer Unten<span id="IdPufferunten" class="ui-li-count">n/a</span></li>
                    </ul>
Hat aber wohl keinen Einfluß auf den Fehler. Der tritt immer noch auf.

Ich habe keine Idee, woran das liegen kann.
 
Mach mal ein
Code:
console.warn("IdPuffer: ", document.getElementById("IdPuffer"), ", IdPufferoben: ", document.getElementById("IdPufferoben"));
und poste, was in der Konsole steht.
 
Das hier:

Code:
IdPuffer: [object HTMLSpanElement], IdPufferoben: [object HTMLSpanElement] 
SCRIPT5007: Die Eigenschaft "innerHTML" eines undefinierten oder Nullverweises kann nicht festgelegt werden. 
127.0.0.1, Zeile 26 Zeichen 21
 
Hi,

getElementById erwartet eine ID, die casesensitive ist. Du verwendest aber zwei unterschiedliche IDs - IdPufferOben im HTML und IdPufferoben im Script.

Das gleiche Problem hast du noch an weiteren Stellen.

Ciao
Quaese
 
Danke....das war es.
Ich hab mir den Code ja tausendmal angeschaut, aber das hab ich nicht gesehen.

Entschuldigt bitte meine Dummheit ;-) Ich bin halt Pascalgeschädigt ;-)
 
Zurück
Oben