Problem beim verwenden eines JSON

Andre_d

Mitglied
Hallo zusammen,

ich habe mir letztens ein Videotutorial bestellt und bin dabei ein Script was dort nach und nach erstellt wird "umzubauen"
Bei diesem Script im Tutorial handelt es sich um eine Datenbank abfrage wärend der Eingabe in ein Suchfeld, wo die Ergebnisse angezeigt werden.

Nun habe ich eine DB und lese diese aus. ich habe somit folgendes JSON ($text)

Code:
{"ergebnis": [{"nachricht" : "Nachricht nummer 1","name" : "Andre"} {"nachricht" : "Das ist ein TEST","name" : "Paul"} ]}

Jetzt möchte ich erreichen das der Inhalt dieses JSON angezeigt wird nachdem man auf einen button gedrückt hat.

Ich habe hier folgenden Code ein wenig angepasst, aber der Inhalt des JSON wird mich nicht angezeigt..

Code:
function readReq() {
       resObjekt.open('get', 'readshout.php?date=' + new date(),true); // hier schicke ein ein Datum an die php datei, wird aber nicht wirklich benötigt.
       resObjekt.onreadystatechange = handleResponse2;
       resObjekt.send(null);
}

function handleResponse2(){
	var text="";
    document.getElementById("readshout").style.visibility = "visible";
	if(resObjekt.readyState == 4) {
		meinJSONObjekt = eval ( "(" + resObjekt.responseText + ")" );
		for(i = 0; i < meinJSONObjekt.ergebnis.length; i++) {
			text += meinJSONObjekt.ergebnis[i].nachricht + "<br>" + meinJSONObjekt.ergebnis[i].name + "<br>";
		}
	}
		document.getElementById("readshout").innerHTML = text;  	  
}

er zeigt mir aber nichts in der htmlseite an, obwohl ich ein DIV-Container erstellt habe.

Code:
<div id="readshout"></div>

ich weis nicht wo der denkfehler ist, oder ob ich was vergessen habe.. sitz hier vor und blick da nicht mehr durch..
 
Zuletzt bearbeitet:
Hi,

ohne den Javascript-Code angeschaut zu haben:

HTML-Tags gehören in spitze Klammern:

HTML:
<div id="readshout"></div>

Und immer nützlich: Meldungen der Fehlerkonsole

LG
 
Hi,

es ist mir leider nicht möglich, in einem Ausschnitt Deines Codes Zeile 25 zu identifizieren. ;)
Schau an die entsprechende Stelle, dort muss ein Syntaxfehler sein.

EDIT: Der Fehler ist in Deinem JSON-String. Da fehlt ein Komma zwischen den beiden Array-Elementen.

LG
 
Zuletzt bearbeitet:
Huhu vielen Dank das du den Fehler gesucht hast!

Aber ich seh nicht wo das komma fehlen soll, mag warscheinlich daran liegen das ich zwischen diesem Syntax-gehüpfe von PHP und JS schon einen Tunnelblick habe *G*
 
Hi,

Code:
{"ergebnis": [{"nachricht" : "Nachricht nummer 1","name" : "Andre"}, {"nachricht" : "Das ist ein TEST","name" : "Paul"} ]}

Schau Dir mal die verlinkte Seite an.

LG
 
Also ich habe nun das Komma beim erstellen des JSON mal hinzugefügt.
Hier auchmal meine PHP Datei wo es drinsteht:

Code:
<? require("config.php");
$text = '{"ergebnis": [';

$shout_abfrage = mysql_query("SELECT * FROM shoutbox ORDER BY id");
while($shoutnow = mysql_fetch_array($shout_abfrage)){
	$text .= '{"nachricht" : "' . $shoutnow['nachricht'] .'",'.'"name" : "' . $shoutnow['name'] . '"},';
}
mysql_close($conn_id);
$text .= ']}';
echo $text; // Ausgabe des JSON strings für die Übersicht
?>
Im Firefox hat es klappt.

nur bekomme ich im IE die Fehlermeldung das in Zeile 27 Zeichen 4
Fehler: meinJSONObjekt.ergebnis[...].nachricht ist Null oder kein Objekt.

hmm :confused:
 
Hi,

ich vermute anhand des PHP-Codes, dass Dein JSON-String jetzt so aussieht:

Code:
{"ergebnis": [{"nachricht" : "Nachricht nummer 1","name" : "Andre"}, {"nachricht" : "Das ist ein TEST","name" : "Paul"}, ]}

Das zweite rote Komma müsste weg.

LG
 
hmm ok, aber das zweite komma kommt ja zustanden durch die whileschleife.
Nehme ich es weg, fehlt nachher wieder das komma in der mitte :confused:
 
Hi,

bischen Phantasie:
PHP:
$komma_setzen = false;
while($shoutnow = mysql_fetch_array($shout_abfrage)){
   if($komma_setzen) {
      $text .= ', ';
   }
   $text .= '{"nachricht" : "' . $shoutnow['nachricht'] .'",'.'"name" : "' . $shoutnow['name'] . '"}';
   $komma_setzen = true;
}

;)

LG
 

Neue Beiträge

Zurück