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

[GELÖST] Ausgabe von JSON Datei ohne Werte

Oh je,oh je.
Habe bisher hauptsächlich Serverseitig in PHP programmiert.
Leider darf ich für diese Aufgabe PHP nicht benutzen, sondern soll alles in JavaScript implementieren.
Darin happert's aber bei mir ganz gewaltig. Außer trivilaer Buttongeschichten und Überprüfungen, ob Clientseitig eine Aktion wirklich erwünscht ist, musste ich JS bisher kaum einsetzen.
Zur for/each-Schleife: Die ist so in JS doch gar nicht implementiert. Als Ersatz wurde mir das for in-Konstrukt angeboten. Das soll ich allerdings nicht verwenden, weiß der Kuckuck,warum?!
Das Manual hilft auch nur bedingt,da sich die for/each-Konstrukte alle auf Funktionen beziehen......
Ist also folgender Ansatz richtig:
Code:
objekt.foreach((function(zeigen){
document.getElementById("RowName_"+x+"").innerHTML += objekt.Rows[objekt].Name + "<br>";
)};
das würde doch bedeuten,dass ich eine Funktion in einer Funktion definiere. Ist das in JS überhaupt gestattet?
oder bin ich auf'm Holzweg?
 
Zuletzt bearbeitet:
Zur for/each-Schleife: Die ist so in JS doch gar nicht implementiert.

In Post #11 steht ein Beispiel dafür!


Habe bisher hauptsächlich Serverseitig in PHP programmiert.
auch in PHP hätte dein Schleifenkonstrukt nicht funktioniert

PHP:
$objekt = json_decode($response, true);
foreach ($objekt as $x => $not_to_be_used) {
    // etwas gekürzt
    $ausgabe .= $objekt['Rows'][$x]['Name'];
}

- - - Aktualisiert - - -

Ist also folgender Ansatz richtig:

Nope ...
- JS ist case-sensitive, foreach != forEach
- lies doch endlich mal die Doku, du rätst hier ja bloß rum, wie man die ganzen Konstrukte/Funktionon benutzt

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array
 
Das werde ich dann wohl ma' machen.(Die Manuals durchlesen,meine ich)
In PHP gibt es aber zumindest eine for/each-Schleife, unabhängig von Funktionen.

Folgendes Datenbankkonstrukt funktionierte beispielsweise reibungslos:
Code:
$treffer=$dbh->query($sql1);
foreach ($treffer as $daten){
print "<br><b><font size='5'><font color='#FA5858'>Es wurden ".$daten['anzahl']." Datensätze gefunden</b></font size></font><br><br>";
und dynamischen HTMl-code erzeuge ich ganz einfach dadurch, dass ich ein echo vor den HTML-Code einfüge, also beispielsweise so:
Code:
function auswahl_ID($anzahl){
	$result = '';
	for($i=1; $i<=$anzahl; $i++){
	$result .='<option style="font-size:15px" value="'.$i.'">Lösch-ID:'.$i.'</option>';}
	$result = '<select name="anzahl_x" id="anzahl_x">'.$result.'</select>';
return $result;}
Aufruf mittels echo auswahl_ID($x);


P.S.: Wo finde ich den Post #11??Ein Link wäre ganz praktisch!
Oha, zu dämlich von mir. Du meintest wohl folgendes Konstrukt:
Code:
var obj = {a:1, b:2};
Object.keys(obj).forEach(function(name){alert(name);});

Hatte ich glatt überlesen. Das ist doch ma' anschaulich...!!

- - - Aktualisiert - - -

Soo, jetzt habe ich mein Ziel erreicht,ohne aufwendig erzeugten HTMl-Code, ohne for/each und ohne mehrere p_Id's zu erzeugen.
Ich binde einfach das jQuery-Framework ein und erreiche mein Ziel.
In diesem Falle wird durch die Datei durchiteriert und alle Eintragungen für die Rubrik
'Allergens'(das werden wohl Verweise auf Zusatzstoffe sein) in einer geordneten Liste ausgegeben.
Analog wende ich das jetzt für alle Rubriken an und habe mein Ziel damit erreicht!
Diesen Thread erachte ich somit als erfolgreich abgeschloßen, bedanke mich für die zahlreichen Posts und verabschiede mich......
Bis zum nächsten Problem :p:)
PHP:
<!Doctype html>
<html>*
<head>
<meta charset="utf-8" />
<title>Allergienskala</title>

<style>
	ul{
	font-size: 150%;
	color:red;
</style>*
</head>
<body>
<div id="platzhalter"></div>
<script src="http://code.jquery.com/jquery-latest.js"></script>

<script>
$.getJSON("https://my.qnips.com/dbapi/ha", function(data) {
var output="<ul>";
for (var i in data.Allergens) {
	output+="<li>" + data.Allergens[i].Id+"</li>";}
	output+="</ul>";
	document.getElementById("platzhalter").innerHTML=output;}
);
</script>
</body>
</html>
 
Zuletzt bearbeitet:
Hier hast du zwar ein Objekt, über das du mit for...in interierst, mit dem es sinnvoller ist, aber dann solltest du auch mit .hasOwnProperty() die Eigenschaft überprüfen.

Auch sehe ich nicht, wie dir in deinem Code jQuery jetzt mit deinem Problem weiterhilft... du hast nur das XHR durch jQuery handeln lassen - und das war ja nie das Problem.

Code:
$.getJSON(
	"https://my.qnips.com/dbapi/ha",
	function(data){
		document.getElementById("platzhalter") = 
			"<ul>" +
			Object.keys(data.Allergens).map(
				function(name){
					return "<li>" + this[name].Id + "</li>";
				},
				data.Allergens
			).join("") +
			"</ul>";
	}
);
PS: Du solltest dringend an deiner Codeformatierung arbeiten...
 
aaah das .map() ist cool. Sieht in Perl auch so aus und ist extrem hilfreich.
Ist this die innere Variable was in Perl $_ ist?
 
Nein this ist das, was im zweiten Parameter für map() drin steht. Da kannst du übergeben, was du willst.
 
Zurück
Oben