JavaScript in PHP

XoR_1337

Mitglied
Guten Abend allerseits!
Wiedermal probiere ich seit Stunden ein Problem zu lösen, was mir allerdings nicht gelingt und ich daher hier um Hilfe bitte.
Ich habe eine PHP-Datei, in der ich JS code stehen habe und versuche, den Inhalt eines PHP-Arrays an ein JS-Array zu übergeben.
Dies funktioniert im Grunde, doch der PHP-Counter ($counter) erhöht sich nicht, warum?

To know:
- $slide1bild[] ist ein Array, welches Dateipfade zu Bildern beinhaltet (aus Datenbank)
- SlideBilder2 wurde schon als Array deklariert
- $counter und var counter haben keinen Namenskonflikt zur Folge
- alert("<?php echo "counter: " . $counter; ?>"); diente nur für mich zur Überprüfung (bei jedem Durchlauf ist $counter = 0)


Hier ein Ausschnitt der PHP-Datei:
Code:
<?php $counter = 0; ?>
for(var counter = 0; counter <= <?php echo $anzahl2 - 1; ?>; counter++)
{
	SlideBilder2[counter] = "<?php echo $slide1bild[$counter]; ?>" + ".png";
	alert("<?php echo "counter: " . $counter; ?>");
	<?php $counter++; ?>;
}


Danke Allen schon mal im Vorraus!

MFG XoR_1337
 
Zuletzt bearbeitet:
$counter++ befindet sich nicht in einer Schleife, die Schleife hast du in JS und das ist für PHP ohne Bedeutung.

Ansonsten: den JS-Array kannst du um einiges bequemer erstellen:

Code:
var SlideBilder2=<?php echo json_encode($slide1bild); ?>;
 
Ein weiteres Problem:
Habe ein weiteres PHP-Array in der gleichen Datei und versuche es einem anderen JS-Array zu übergeben. Das PHP-Array beinhaltet einen formatierten Text (mit <br> und Umlauten).
Habe es wie oben wieder mit json versucht, doch das JS-Array beinhaltet komischerweise nur den Inhalt des ersten "Datensatzes" des PHP-Arrays. bei den anderen beiden (Slide2_Text[1] und Slide2_Text[2]) wird "null" ausgegeben, habe leider keine Ahnung warum?

Code:
Code:
Slide2_Text = <?php echo json_encode($slide1text); ?>;
alert("Text1: " + Slide2_Text[1]);

Hoffe auf schnelle Antwort.

MFG XoR_1337
 
Ich würde mal den Zeichensatz verdächtigen. json_encode funktioniert bei Strings, sofern sie nicht-ASCII-Zeichen(wie bspw. Umlaute) enthalten, nur, wenn der String UTF-8 kodiert ist.

Einfache und beste Lösung: speichere das komplette PHP-Skript mit dem Array UTF-8-kodiert ab.

Falls das aus irgendeinem Grund nicht geht: kodiere nur die Strings im array, ein Beispielcode, wie das geht, findest du hier: http://www.php.net/manual/de/function.json-encode.php#106417
 
Hab schon nachgeschaut, ist utf8_general_ci kodiert, sollte also eigentlich gehen, tut es aber dennoch nicht.
Habe es nun anderst gelöst:

den PHP-Array zu einem String zusammenfügen (die einzelnen Einträge mit "*" getrennt) und einer JS-Variablen zuweisen:
var Text = "<?php echo implode ("*", $slide1text); ?>";

Hiernach den String, der in der JS-Variablen steht wieder "aufgetrennt" und einem JS-Array zugewiesen:
Slide2_Text = Text.split("*");
 
Jap, die Daten kommen aus einer DB, dessen Verbindungszeichensatz ebenfalls UTF8 ist. Is irgentwie eine komische Sache^^
 

Neue Beiträge

Zurück