Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP Variable in externer JavaScriptDatei nutzen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 16.08.2008, 19:05

Hallo Forum,
ich teste gerade ein wenig und habe folgende Frage
Wenn ich folgenden Code ausführe, wird die PHP-Variable korrekt ausgegeben...

Code: Alles auswählen

<?php $test = "Hallo"; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml" xml&#58;lang="en" lang="en">

<head>
</head>

<body>
<script type="text/javascript">
<!--
var test = '<?php echo "$test" ?>';
alert&#40;test&#41; ;
//-->
</script>

</body>
</html>
Wenn ich allerdings den JavaScriptCode extern einbinde, klappt das nicht mehr...

Code: Alles auswählen

<?php $test = "Hallo"; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml" xml&#58;lang="en" lang="en">

<head>
<script language="JavaScript" type="text/javascript" src="test.js"></script>
</head>
<body onload="load&#40;&#41;">
</body>
</html>
hier der JavaScriptCode der Datei test.js ...

Code: Alles auswählen

function load&#40;&#41; &#123;
var test = '<?php echo "$test" ?>';
alert&#40;test&#41; ;
&#125;
Das Script gibt mir <?php echo "$test" ?> aus. Aber warum?

Vielen Dank für einen Denkanstoss....

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 16.08.2008, 19:08

hallo,

das ist so weil PHP nur in einer datei mit Endung .php ausgeführt wird.
.js wird nicht vom PHP Parser überprüft.

du musst die Variable an das externe Java-Script übergeben, dann wirds auch ausgegeben.

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 16.08.2008, 19:21

Burns hat geschrieben: du musst die Variable an das externe Java-Script übergeben, dann wirds auch ausgegeben.
Danke für die Antwort...
Hhm, das wird schwierig, es sind gute 30 Variablen, wie kann ich die denn jetzt an die JavaScript Datei übergeben? Ich könnte natürlich auch den Code
wie im1. Beispiel einfügen, aber das möchte ich eigentlich nicht, der SeitenQuelltext wird dann unendlich lang... :-?
Die Lösung mit der externen JavaScriptdatei möchte ich eigentlich beibehalten...

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Anonymous

Beitrag von Anonymous » 16.08.2008, 19:25

dann musst du die externe js datei durch den php parser laufen lassen....

M4rco
PostRank 2
PostRank 2
Beiträge: 58
Registriert: 06.08.2007, 18:37

Beitrag von M4rco » 16.08.2008, 19:32

ja und kannst die javascript Datei gleich komprimieren.

Burns
PostRank 5
PostRank 5
Beiträge: 296
Registriert: 10.06.2008, 18:54

Beitrag von Burns » 16.08.2008, 19:32

dazu musste nur die ganzen Variablen fürs Javascript angeben in der Haupt-Seite


<script type="text/javascript">
test='<?PHP echo "Hallo"; ?>';
</script>

dannach das externe javaScript aufrufen

<script language="JavaScript" type="text/javascript" src="test.js"></script>

und die variable musste bekannt sein
natütlich ohne PHP-Code in der externen datei, sondern nur JavaSript

xoni
PostRank 8
PostRank 8
Beiträge: 692
Registriert: 22.08.2007, 12:14

Beitrag von xoni » 16.08.2008, 19:33

net(t)worker hat geschrieben:dann musst du die externe js datei durch den php parser laufen lassen....
@net(t)worker

danke für den Tipp... dann werd ich mich mal auf die Suche machen, vielleicht gibt es ja im Netz 'nen gutes TUT...

so long...

@Burns

Sorry, Posting hat sich gerade überschnitten, Deine Lösung funktioniert gut.
Den Vorschlag von net(t)worker werde ich dennoch mal nachgehen.
Vielen Dank Euch Beiden und noch nen schönen SA Abend...

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 17.08.2008, 09:42

net(t)worker hat geschrieben:dann musst du die externe js-datei durch den php-parser laufen lassen....
Wobei aber zu beachten wäre, dass die PHP-Variablen, die in der Hauptdatei existieren, weiterhin nicht in der Javascript-PHP-Datei existieren. Dieses:

Code: Alles auswählen

index.php&#58;
<?php $test = "Hallo"; ?>
blafasel
<script language="JavaScript" type="text/javascript" src="test.js.php"></script>

test.js.php&#58;
<?php header&#40;"Content-Type&#58; text/javascript"&#41;; ?>
function load&#40;&#41; &#123;
var test = '<?php echo "$test" ?>';
alert&#40;test&#41; ;
&#125;
… funktioniert nicht, weil $test zwar in index.php existiert, aber immer noch nicht in test.js.php, denn das sind zwei getrennt ablaufende PHP-Skripte.

Wenn überhaupt, müsste $test in test.js.php selbst erzeugt werden, also die ganze PHP-Verarbeitung aus der Hauptdatei in die Javascript-Datei wandern:

Code: Alles auswählen

index.php&#58;
<script language="JavaScript" type="text/javascript" src="test.js.php"></script>

test.js.php&#58;
<?php 
  header&#40;"Content-Type&#58; text/javascript"&#41;;
  $test = "Hallo";
?>
function load&#40;&#41; &#123;
var test = '<?php echo $test ?>';
alert&#40;test&#41; ;
&#125;
Soll Erzeugung und Ausgabe der Daten weiter getrennt bleiben, ist der von Burns gezeigte Weg der Naheliegendste. Als Alternative würde sich noch die Übergabe der PHP-Variablen als URL-Parameter anbieten:

Code: Alles auswählen

index.php&#58;
<?php $test = "Hallo"; ?>
blafasel
<script language="JavaScript" type="text/javascript" src="test.js.php?test=<?php echo urlencode&#40;$test&#41;; ?>"></script>

test.js.php&#58;
function load&#40;&#41; &#123;
var test = '<?php echo addslashes&#40;htmlspecialchars&#40;$_GET&#91;"test"&#93;&#41;&#41;; ?>';
alert&#40;test&#41; ;
&#125;
Macht aber hier nicht viel Sinn - wozu die Daten noch erst wieder zum Server schicken, wenn sie doch nur von Javascript im Browser benötigt werden.
Zuletzt geändert von Mork vom Ork am 17.08.2008, 09:47, insgesamt 1-mal geändert.

Airport1
PostRank 10
PostRank 10
Beiträge: 4489
Registriert: 16.08.2004, 18:50
Wohnort: Backnang / bei Stuttgart

Beitrag von Airport1 » 17.08.2008, 09:46

die einfachste loesung ist das externe js als

<script language="javascript" src="meinExternesJs.php"></script>

einzubinden. dann wirds durch den php parser gejagt bevor es als javascript zurueckkommt. ist also nicht sonderlich kompliziert..
Linktauschanfragen zwecklos
https://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
https://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
https://www.ranking-hits.de/ Counter & PR Service

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag