document.write() langsam kommt verzweifling auf ....
joschua
- javascript
0 Urs Enke0 Joachim0 Sven Rautenberg
Hallo Leute
ich stecke etwas in der zwikmühle :(
ich muss in ein php template weiteren phpcode einfügen (ein paar sql queries)
da dies in geparsten template nicht geht ist ja bekannt.
bis heute habe ich dieses problem mit einem javascript gelöst.
im template:
<script language="javascript" src="template_js.php"></script>
template_js.php:
<?php
meine queries usw...
echo "document.write($result);";
?>
bis anhin funktionierte das ohne probleme.
Heute muss ich aber aus einer textwerbung DB werte wie:
$result = "Hallo
dies ist
meine
textwerbung"
ausgeben.
jetzt erhalte ich aber mit document.write folgende meldung:
nicht abgeschlossene zeichenfolgekonstante!
beispiel zum veranschaulichen:
<script language="javascript">
<!--
var result = "Hallo
welt!";
document.write(result);
-->
</script>
meine frage:
wie kann ich die variable result so ändern das ich sie mit document.write ausgeben kann?
ode gäbe es eine alternative? (ausser alle DB einträge zu ändern)
was ich ebenfalls versucht habe ist:
<script language="javascript">
<!--
var result = "Hallo
Welt";
var neuresult = result.replace(/\n/,"/\r/");
document.write(neuresult);
-->
</script>
funktioniert leider auch nicht :(
Danke euch zum foraus
joschua
jetzt erhalte ich aber mit document.write folgende meldung:
nicht abgeschlossene zeichenfolgekonstante!
Das liegt nicht an document.write, sondern an deiner Deklaration, daher nützt auch eine Konvertierung (die in diesem Fall gar nicht erst ausgeführt würde) des Strings nichts: Soweit ich weiß, dürfen sich in JS Strings im Quellcode nunmal nicht über mehrere Zeilen erstrecken. Es führt also wohl kein Weg daran vorbei, bereits bei der Generierung des Codes für die Erfüllung dieser Bedingung zu sorgen, das Script kann schließlich nicht seine eigenen Syntaxfehler korrigieren.
Da ich allerdings nicht genau verstanden habe, wie du den Code generierst, kann ich da nichts genaueres sagen...
Urs
hi,
Javascript beendet eine Anweisung automatisch am Zeilenende, eine Wertzuweisung mit Zeilenumbruechen kann also nicht funktionieren.
Sowas kann man hoechstens so loesen:
var lala = "blahdieblah"
+ "lalala";
document.write(lala);
Wenn die Zeilenumbrueche aus dem PHP kommen, wuerde ich sie auch _dort_ mit einem regulaeren Ausdruck ersetzen. Teste:
$lala = "lalal
mahste
hafsd";
echo ereg_replace("\n", " ", $lala);
Gruesse Joachim
Moin!
ich stecke etwas in der zwikmühle :(
ich muss in ein php template weiteren phpcode einfügen (ein paar sql queries)
da dies in geparsten template nicht geht ist ja bekannt.
bis heute habe ich dieses problem mit einem javascript gelöst.
im template:
<script language="javascript" src="template_js.php"></script>
template_js.php:
<?php
meine queries usw...
echo "document.write($result);";
?>
Du gestattest, daß ich mal kurz zusammenbreche! Wenn die Möglichkeit besteht, durch serverseitige Techniken dynamisch Seiten zusammenzubasteln, und das einzige, was dir dazu einfällt, ist die Generierung von Javascript-Code, der clientseitig dynamisch Seiten generiert - sorry, das kann irgendwie nicht die Ideallösung sein.
Dein Ansatz ist vielleicht simpel eingebaut. Aber viel eleganter wäre es, gleich die notwendigen Änderungen am System vorzunehmen, damit wirklich nur PHP zum Einsatz kommt, und nicht Javascript bemüht werden muß. Obwohl: Wer Javascript ausgeschaltet hat, muß sich wenigstens die Werbung nicht ansehen - wird zwar die Werbepartner nicht freuen, aber die Benutzer.
Mein Ansatz wäre, im System einen neuen Template-Befehl einzubauen, der an seiner Stelle ein namentlich benanntes PHP-Fragment includet, welches dann seinerseits deine DB-Aufgaben erledigt.
Wie kompliziert das ist, kann ich natürlich nicht sagen, aber es ist keinesfalls unmöglich.
- Sven Rautenberg