JavaScript und PHP

reweiss

Mitglied
Hallo,

ich komme einfach nicht weiter. Das Problem. Ich habe eine PHP Datei dir mir bestimmte Werte aus der Datenbank ermittelt. Um per JavaScript auf diese Werte zugreifen zu können, gibt die PHP Datei die Daten so aus das ein JavaScript Array gebaut wird:

PHP:
while($line){
echo "result[".$i."] = new Array(); ";
echo "result[".$i."][\"data\"] =  \"".$data.$line[0]."\"; ";
...

Im JavaScript kann ich dann die PHP Datei aufrufen

HTML:
document.write("<script language=\"JavaScript\" src=\"my.php\"></script>");

anschließen kann ich dann die Werte mit
HTML:
document.write("document.write(item['daten']);");
ausgeben.

Die Ausgabe ist dann z.B. "Hello";

Soweit so gut funktioniert auch alles. Jetzt möchte ich jedoch noch Parameter mit einbinden die durch den Script-Aufruf übermittelt werden. Diese Parameter möchte ich dann hinten an die Ausgabe hängen.

z.B.
HTML:
var para = {};
para.name = escape(name);

document.write("<script language=\"JavaScript\" src=\"my.php\"></script>");
document.write("document.write(item['daten']);");
document.write(para.name);

Die Ausgabe (wenn "World" übergeben wurde) sollte dann halt "Hallo World" sein.

Ich höffe ihr könnt mich verstehen. Vielleicht gibt es ja auch ne einfachere Lösung für die PHP+JavaScript Geschichte!

LG
 
Hi,

Soweit so gut funktioniert auch alles. Jetzt möchte ich jedoch noch Parameter mit einbinden die durch den Script-Aufruf übermittelt werden. Diese Parameter möchte ich dann hinten an die Ausgabe hängen.

ich weiss nicht, ob ich Dich richtig verstehe. Wenn Du den Parameter an das PHP-Script übergeben willst, muss das so aussehen:

HTML:
var para = {};
para.name = escape(name);

document.write("<script language=\"JavaScript\" src=\"my.php?parameter=" + para.name + "\"></script>");

Im PHP-Script findest Du den Wert dann im $_GET-Array ($_GET['parameter']).

LG
 
HTML:
document.write("<script language=\"JavaScript\" src=\"my.php\"></script>");
document.write("document.write(item['daten']);");

Erzeugt:
HTML:
<script language="JavaScript" src="my.php"></script>
document.write(item['daten']);

Oder Pseudo:
Code:
<haus stadt="Berlin" Straße="Pariser Platz 1"></haus>
Zimmer.Füllen(Stuhl)

Das letztere document.write hängt total sinnlos in der Gegend rum und wird selbstverständlich nicht als JavaScript direkt angesehen, da es außerhalb vom Script-Container ist. So sollte es sein:
HTML:
<script language="JavaScript" src="my.php"></script>
<script language="JavaScript">
<!--
  document.write(item['daten']);
//-->
</script>

Dahingehend musst du deins ändern.
 
ok also hier mal ein komplettes Beispiel:

meine PHP
PHP:
echo "var result = new Array();";
$i = 0;
while($i < 10){
        echo "result[".$i."] = new Array(); ";
        echo "result[".$i."][\"name\"] = \"Hallo".$i."\";";
        $i++;
}

Die php wird durch ein JavaScript aufgerufen:
Code:
function writeHTML(){

var para = {};
para.name = escape(name);

var out = "<script language=\"JavaScript\" src=\"my.php\"></script>";
out += "<script language=\"JavaScript\">";
out += "document.write(\"<table> \");";
out += "for each (var item in result){ ";

/* item loop */
out += "document.write(\" <tr><td> \");";
out += "document.write(item['name']);";
/* here will ich den Paramter anhängen */
out += "document.write(para.name)";
out += "document.write(\"</td></tr>\");";
/* item loop end */

out += "}";
out += "document.write(\"</table>\");";
out += "</script>";
return out;
};

document.write(writeHTML());

Hinter - out += "document.write(item['name']);"; - möchte ich gerne den Wert aus dem Übergebenen Parameter anhängen. Das bekomme ich leider nicht hin.

Das Script wird durch eine HTML aufgerufen:
HTML:
<script language='JavaScript'>
var name = 'testName';
</script>
<script language="JavaScript" src="myjs.js"></script>

LG
 
Hi,

Du definierst para innerhalb der Funtion writeHTML als lokale Variable. Der generierte Code wird aber im globalen Gültigkeitsbereich ausgeführt.

Wozu Du das Ganze so unübersichtlich und verschachtelt machst, erschließt sich mir allerdings auch nicht.

LG
 
Hi,

wie geht das Beispiel denn einfacher?

Gegenfrage: Aus welchem Grund hast Du es so kompliziert gemacht? Erst muss der Browser "myjs.js" vom Server abrufen, darin wird nur weiterer JS-Code generiert. Wenn der ausgeführt wird, muss nochmal ein Request auf "my.php" gestartet werden. Gestalte doch my.php so, dass Du das direkt einbinden kannst oder binde es nicht per Script-Tag ein, sondern lass Deine Seite gleich den Code generieren, dann hast Du nicht das Problem, auf das Laden der Resource warten zu müssen.

LG
 
Das Problem ist, das andere Seiten das Script einbinden sollen. Und dazu sollen sie ein JavaScript einbinden und nicht direkt php. Aus diesem Grund mache ich das so kompliziert ;-)
 
Eine Frage, denk cih mir da was falsch oder hast du da document.write doppelt drin?
Also du sagst quasi
Code:
var variable = document.write("schreib es!");
document.write(variable);

Warum?

MFG
Mark Paspirgilis
 

Neue Beiträge

Zurück