Mehrdimensionale Arrays aus PHP uebergeben
Nelio
- javascript
Hallo,
ich steh irgendwie mal wieder auf dem Schlauch.War mir nicht ganz sicher ob PHP Forum oder Javascript, aber ich glaube hier bin ich eher richtig.Habe nichts dazu passendes gefunden, was mich irgendwie wundert.
Nun gut, also zum Problem: Ich habe ein Mehrdimensionales Array in PHP erzeugt und brauche es im Javascript um daraus eine <option>-liste zu erstellen(Ich erstelle sie bewusst nicht in PHP weil die Liste alá hierselecet(QuickForms) geladen werden soll, sprich bei passender Auswahl einer vorhergehenden Liste).
Wenn ich nun mein Array mit folgendem Code an JS uebergeben will, werden nachstehende Anweisungen einfach ignoriert.
var jsarray = new Array();
<?php
foreach ($array1 as $key => $array2)
{
foreach($array2 as $key2 => $value2){ //$vey2 und $value2 werden hier getausch, da es sich um ein Assoziatives Array handelt(brauchte es in PHP allerdings andersrum(einfacher zu verarbeiten)).
echo"jsarray[$key][$value2] = '$key2';";
}
}
?>
document.write(jsarray);
Ob ich da nun versuche das Array auszugeben oder einfach nur document.write("HALLO!"); schreibe ist egal.Es wird einfach nichts mehr ausgeführt.Aber auch im QT siehts sauber aus.Hier zum anschauen:
<script type="text/javascript"><!--
var models = new Array();
jsarray['1']['1'] = 'TEST';
jsarray['2']['1'] = 'MDX';
jsarray['3']['1'] = 'NSX';
jsarray['4']['1'] = 'RL';
jsarray['5']['1'] = 'RSX';
jsarray['6']['1'] = 'TL';
jsarray['7']['1'] = 'TSX';
jsarray['8']['2'] = 'B10';
jsarray['9']['2'] = 'B12';
jsarray['10']['2'] = 'B3';
jsarray['11']['2'] = 'B5';
jsarray['12']['2'] = 'B6';
jsarray['13']['2'] = 'B7';
jsarray['14']['2'] = 'B8';
jsarray['15']['2'] = 'D10';
jsarray['16']['2'] = 'D3';
jsarray['17']['2'] = 'RoS';
jsarray['18']['3'] = 'Hi-Top';
jsarray['35']['4'] = 'Vaq';
jsarray['36']['4'] = 'Va';
jsarray['37']['4'] = 'Vi';
document.write(jsarray);
//-->
</script>
Nun zur Frage: Woran liegt es, dass das document.write nicht ausgeführt wird(oder welcher Befehl auch immer)?
Vielen Dank im Vorraus.
Mit freundlichen Grüßen
Nelio
Postum: Um vorzugreifen, die Liste soll anhand des zweiten Keys erstellt werden, sobald dieser mit dem Value des Eintrages aus der ersten Liste übereinstimmt.Könnte auch dabei unterstützung brauchen.
Mein Einstieg in JS :)
Danke
Hi,
Nun gut, also zum Problem: Ich habe ein Mehrdimensionales Array in PHP erzeugt und brauche es im Javascript
JSON ist ein Stichwort, über das du dich informieren solltest.
Wenn ich nun mein Array mit folgendem Code an JS uebergeben will, werden nachstehende Anweisungen einfach ignoriert.
Bei (Syntax-)Fehlern der Normalfall, dass die weitere Verarbeitung dann nicht stanttfindet.
Hast du denn wenigstens mal in die Fehlerkonsole geschaut ...?
Hier zum anschauen:
<script type="text/javascript"><!--
var models = new Array();
jsarray['1']['1'] = 'TEST';
Ist jsarray wirklich weiter oben definiert - und wenn ja, was soll dann die Deklaration der Variablen models an dieser Stelle?
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
JSON ist ein Stichwort, über das du dich informieren solltest.
Okay, werde ich tun.Danke.
Bei (Syntax-)Fehlern der Normalfall, dass die weitere Verarbeitung dann nicht stanttfindet.
Hast du denn wenigstens mal in die Fehlerkonsole geschaut ...?
Daran dachte ich auch.Allerdings konnte ich keinen Syntaxfehler finden.
Welche Konsole meinst du?
Mein Editor sagt die Syntax ist korrekt, aber mag sein das er bei Javascript keine Fehler ausgibt.
Ist jsarray wirklich weiter oben definiert - und wenn ja, was soll dann die Deklaration der Variablen models an dieser Stelle?
Entschuldige, es ist natürlich das jsarray Array deklariert(hatte beim Posten den namen nicht geändert).
Danke soweit.
Mfg
Nelio
Hi,
Hast du denn wenigstens mal in die Fehlerkonsole geschaut ...?
Daran dachte ich auch.Allerdings konnte ich keinen Syntaxfehler finden.
Welche Konsole meinst du?
Die JavaScript-Fehlerkonsole des Browsers (und zwar eines vernünftigen wie bspw. FireFox; IE ist zum Debuggen kaum geeignet).
MfG ChrisB
Hi,
»» > Hast du denn wenigstens mal in die Fehlerkonsole geschaut ...?
»»
»» Daran dachte ich auch.Allerdings konnte ich keinen Syntaxfehler finden.
»» Welche Konsole meinst du?Die JavaScript-Fehlerkonsole des Browsers (und zwar eines vernünftigen wie bspw. FireFox; IE ist zum Debuggen kaum geeignet).
MfG ChrisB
Hm, habe im Firefox die JavaConsole.
Bin einfach mal dadurch gegangen, konnte aber nichts auffälliges finden.
Wonach genau muss ich denn suchen?
Aber habe gerade in der Fehler-Konsole folgendes gefunden:
Fehler: jsarray[1] has no properties
Quelldatei: http://localhost/
Zeile: 50
der QT in der Zeile: "jsarray[1][1] = 'TEST';"
Was genau soll das bedeuten? Ein Wert ist schließlich zugewiesen.
Danke schonmal.
Mfg
Nelio
Hey,
entschuldigt den Doppelpost.Ich werd mich wohl mal registrieren.
Habe den "Fehler" gefunden.
Willkommen in JS.Das hat den Fehler behoben:
foreach($array2 as $key2 => $value2){
echo"jsarray[$key]= new Array();\n";
echo"jsarray[$key][$value2]= '$key2';\n";
}
Danke an alle.
Grüße
Nelio
Hallo,
Hm, habe im Firefox die JavaConsole.
Java? Der Menüpunkt in FF heißt für JavaScript "Fehlerkonsole".
Aber habe gerade in der Fehler-Konsole folgendes gefunden:
Fehler: jsarray[1] has no properties
Was genau soll das bedeuten?
Das bedeutet das, was dasteht: dass jsarray[1] keine Eigenschaften hat.
Es ist null oder undefined oder false oder NaN oder weiss der Geier was, aber kein Array.
Ein Wert ist schließlich zugewiesen.
*Soll* zugewiesen werden, das ist ja gerade der Fehler.
Gruß, Don P
Hallo,
Aber auch im QT siehts sauber aus.Hier zum anschauen:
[...]
Entschuldige, es ist natürlich das jsarray Array deklariert(hatte beim Posten den namen nicht geändert).
Wie jetzt? Du postest zum Beweis eine angebliche Ausgabe, die du aber erst von Hand zurechtbiegen müsstest? *kopfschüttel*
Du solltest lieber schauen, was wirklich beim Browser ankommt, und was seine Fehlerkonsole dazu zu sagt.
Gruß, Don P
Hallo,
var a = <?php echo json_encode($phpArray); ?>;
Tschü