Javascript PHP Variable ausgeben?
Hallo,
ich möchte an einer Stelle in folgendem Code
eine PHP Variable ausgeben. Nur leider funktioniert das nicht so, wie ich mir gedacht habe. Sucht in dem Code mit Strg+F nach "$the_code" und nehmt das 2. Suchergbnis. Das nach default_content.
Stattdessen kommt immer ein HTTP 500 Error. Als Fehler beim PHP Log kommt folgendes:
[20-Mar-2022 18:45:43 UTC] PHP Parse error: syntax error, unexpected 'ace' (T_STRING), expecting ';' or ',' in /home/emclouds/public_html/dev/pythonnow/userpanel/testuser/editor/editor.php on line 64
Wäre nett wenn ihr mir kurz helfen könntet.
Keine Ahnung warum es weg ist. Hier das neue:
Hier das entsprechende Script (teil des Hauptcodes):
<script>ace.require("ace/ext/language_tools");var editor=ace.edit("editor");ace.require('ace/ext/settings_menu').init(editor);var editor_cnt=1,editor_index=1,active_editor=1,editor_session=[];var request,init_ts,open_file_name;var lang='python3';default_content=print($the_code);var prev_result='in';var site_url="https://www.online-python.com/"
var base_url="https://www.online-python.com/"
var share_url=base_url;var exe_cnt=0;var addthis_share={url:share_url,}
var csrf_token_name='ci_csrf_token'
var csrf_token=''
var isMobile=window.orientation>-1;toastr.options={"closeButton":true,"debug":false,"newestOnTop":true,"positionClass":"toast-top-right","preventDuplicates":true,"preventOpenDuplicates":true,"maxOpened":1,"onclick":null,"showDuration":"100","hideDuration":"1000","timeOut":"3000","extendedTimeOut":"1000","showEasing":"swing","hideEasing":"linear",};var instance=Split(['#mi','#d'],{direction:'vertical',sizes:[66,28],gutterSize:5,cursor:'row-resize',minSize:[0,180],onDrag:function(){editor.resize();},});function term_expand(){var element=document.getElementById('term-expand').innerHTML;if(element==='<i class="fas fa-expand-alt fa-lg"></i>')
.... geht noch weiter
3 Antworten
Du kannst mit JavaScript nicht auf PHP-Variablen zugreifen. PHP wird auf dem Server ausgewertet, JavaScript im Browser. Bevor dein JavaScript läuft, ist PHP schon längst fertig.
Du kannst höchstens, je nach dem was du genau vor hast, die PHP-Variable in dein JavaScript einschleusen, indem du es PHP einfach in die Ausgabe printen lässt:
<?php
// ... irgendwas
$the_code = 123;
?>
<html>
// dein HTML
<script>
// dein JavaScript
alert("$the_code ist <?=$the_code?>")';
</script>
</html>
<?=$the_code?> ist einfach kurz für <?php echo $the_code; ?>
PHP wertet das also aus und wenn das fertige Dokument zum Nutzer gesendet wird, landet $the_code dann in der alert()-Anweisung.
Dann geht das wie oben beschrieben. Du lädst dein Zeug in $the_code und gibst es dann mittels
<?php echo($the_code); ?> // oder <?=$the_code?>
ins JavaScript aus, wo es benötigt wird.
leider funktioniert dies nicht. stattdessen wird der editor "ungültig" und kommt gar nicht erst zum vorschein...
Wenn du in JavaScript einfach den PHP Variablennamen verwendest dann kann das nicht funktionieren.
PHP wird serverseitig interpretiert, dein JavaScript jedoch browserseitig.
Du kannst also mit JavaScript und PHP erstmal nicht interagieren.
Wenn du das JavaScript jedoch durch PHP generierst kannst du deinen gewünschten Wert direkt dort reinschreiben.
Die Serverseite wird vorher durchlaufen. Ist dann die Seite geladen lädt das JavaScript.
Danke für deine nette Antwort und die Erklärung. Wenn ich aber mit
<?php echo '<script>.....
arbeite, wird das ganze ja beim nächsten Hochkommata unterbrochen.. Kann ich was dagegen machen?
das kann so nicht funktionieren . hat auch mit SCRIPT nichts zu tun . lerne bitte die Grundlagen wo was wie läuft . und dann formatier dein Script so das man es lesen kann .
guckt dir einfach mal beispiele an wie man z.v. ausgaben so macht das sie im Javascript bereich eingebunden werden können .
wenn also
<script> <?php require .....
?></script>
und dein script darf nur JAVASCRIPT ausgeben . PHP läuft nicht im browser . wenn PHP fertig ist, schickt es die seite an den Browser und PHP wird beendet . ergo wenn dein browser die seite bekommen hat, gibt es das ausliefernde PHP schon lange nicht mehr . server client anwendungen sind keine app wie .z.b. Java und auf deinem Desktop als Anwendung.
Ja. Das nennt man escapen. Ich geb dir mal paar Beispiele wie man in PHP mit Strings umgeht
- In einzelnen Hochkommata werden keine Variablen ersetzt
- In einzelnen Hochkommata kann man aber Anführungszeichen problemlos schreiben
- In Anführungszeichen werden Variablen ersetzt durch den Wert
- In Anführungszeichen müssen Anführungszeichen "escaped" werden durch Schrägstrich
der hat eher das problem das er javascript und php mixed , also ein require php und unten dann mit javascript weiter macht , da hilft auch escapen nix .
Das ist mir klar. Ich gebe ja hier auch eher Hilfestellung für den Fall, dass er seinen JS Code serverseitig vorrendern möchte. Wenn er da dann auch ein require reinpackt wird das natürlich immer noch nicht funktionieren. Grundlagen lernen wäre vorher tatsächlich angebracht.
du mixed php und javascript in der selbern datei .
sorry aber du hast ds konzept komplett nicht verstanden .
php und javascript haben gar nichts miteinander zu tun , das einzige was du machen kannst, mit php ein javascript ausgeben . also mit echo "javascript strings"
aber dann funktioniert dein ganzer require kram eh nicht . weil halt php nicht javascript ist . und wenn require bei javascript gibts das nur serverseitig z.b. bei node.js
Also, mein Plan ist folgender. Es gibt eine Datei, welche ausgelesen wird. Der Inhalt wird dann in der Variable $the_code gespeichert. Dieser soll dann in im Bereich des editors ausgegeben werden (sozusagen die gespeicherte Datei in den Editor laden), oder fällt jemanden da was anderes ein?