Announcement

Collapse
No announcement yet.

json Format - wie Daten ausgeben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • json Format - wie Daten ausgeben?

    Hallo zusammen,

    ich rufe über ein JavaScript jede Sekunde eine PHP Datei ab, in welcher ich Daten aus einer Datenbank auslese. Die Daten speicher ich in einem array und gebe diesen dann im JSON Format aus.

    PHP Code dazu:

    getdata.php

    Code:
    PHP Code:
    <?php
    include('../config.php');

    // Cachen verhindern
    header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0"false);
    header("Pragma: no-cache");


    $artikelnummer =$_GET["artikelnummer"];
    $abfrage "SELECT * FROM artikel Where id='$artikelnummer'";
    $ergebnis mysql_query($abfrage);
    while(
    $row mysql_fetch_object($ergebnis)){

          
             
    $datastring = array(
             
    "preis"      => "$row->preis",
             
    "ausgabe1" =>
    "$row->ausgabe1");
             
             echo 
    json_encode($datastring);

       }


    ?>
    In meiner index.php habe ich mein Java Script:


    Code:
    Code:
    <script type="text/javascript"  >
    loadData();
    
    setInterval("loadData()",1000);
    
    function loadData()
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
    
    var preisField = document.getElementById('preisid');
                var card = eval('(' + req.responseText + ')');
                preisField.value = card.preis[0].value;
    
    
    var ausgabe1Field = document.getElementById('ausgabe1id');
                var card = eval('(' + req.responseText + ')');
                ausgabe1Field.value = card.ausgabe1[0].value;
    
    
             }
         };
         xmlHttp.send(null);
     }
    }
    </script>
    Da ich aber in JavaScript nicht so viel Ahnung habe komme ich mit den meisten erläuterungen zu json in JavaScript nicht so wirklich klar. Deshalb mein Hilferuf Rolling Eyes

    Ich habe den Code ursprünglich wie folgt benutzt:

    Code:
    Code:
    <script type="text/javascript"  >
    loadData();
    
    setInterval("loadData()",1000);
    
    function loadData()
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("content").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    </script>
    Und hab die Daten dann in einem Div so: <div id="content"></div> ausgegeben.Leider wurde hier aber alles aufeinmal ausgegeben und ich konnte die Ausgaben meiner getdata.php datei nicht flexibel auf meiner index Datei plazieren. Jetzt muss ich die Einzelnen Ausgaben in der PHP Datei so splitten, das ich Beispielsweise $row->preis in ein eigenes Div packe $row->ausgabe1 in ein eigenes Div Packe ( <div id="preis"></div> <div id="ausgabe1"></div>) usw.

    Hier bin ich auf das JSON Format gestoßen was hierbei helfen kann.

    nur wie muss mein JavaScript nun richtig aussehen damit das auch so klappt.

    Habe das in dem ersten oberen JavaScript irgendwie probiert aber das funktioniert nicht.


    Kann mir einer helfen???

  • #2
    Mit der Fehlerbeschreibung "funktioniert nicht" läßt sich nur wenig anfangen. Du weißt wo du JS Fehlermeldungen in deinem Browser findest? Gibt es eine?

    Im Prinzip sollte der obere JS Code funktionieren, nur musst du den response Code nur einmal mit eval umwandeln
    Code:
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                var response = eval('(' + req.responseText + ')');
                var preisField = document.getElementById('preisid');
                var ausgabe1Field = document.getElementById('ausgabe1id');
                preisField.value = response.preis[0].value;
                ausgabe1Field.value = response.ausgabe1[0].value;
             }
         };
    Allerdings kann ich kein PHP und daher nicht sagen, ob der Code richtig ist. Wie sieht denn der responseText genau aus?

    Comment

    Working...
    X