Nachladen von Inhalten in HTML-Seite
Karl-Heinz Milaster
- html
- php
- webserver
Hallo,
ich habe kürzlich in einem PHP-Buch gelesen wie man HTML-Code in eine bestehende HTML-Seite vom eigenen Server mit nur einem Befehl nachladen kann - ohne AJAX, JQuery & Co. Da ich ich etliche PHP-Bücher habe, war die nachträgliche Suche erfolglos. Hat jemand eine Idee?
Gruss, khm
Hi,
ich habe kürzlich in einem PHP-Buch gelesen wie man HTML-Code in eine bestehende HTML-Seite vom eigenen Server mit nur einem Befehl nachladen kann - ohne AJAX, JQuery & Co.
also entweder hast du da etwas missverstanden, oder du drückst dich falsch aus. PHP wird auf dem Server ausgeführt, bevor die Seite beim Browser ankommt. Von "Nachladen" kann also keine Rede sein. Aber suchst du vielleicht einfach include?
Damit wird aber nichts nachgeladen, sondern bereits auf dem Server eine weitere Datei an der Stelle in die Ausgabe eingefügt, wo das include-Statement steht.
So long,
Martin
Nein, ich habe da nichts missverstanden, der Autor hat sich so ausgedrückt.Aber mit include
legst Du wahrscheinlixh richtig.
Bestend Dank. khm
Nein, ich habe da nichts missverstanden, der Autor hat sich so ausgedrückt.Aber mit
include
legst Du wahrscheinlixh richtig.
Das Problem ist, dass man nichts nachladen kann per HTML. Und PHP wird eben auf dem Server ausgeführt. Ein beispiel:
GET /index.php?seite=startseite HTTP/1.1
index.php
aus und steckt in $_GET['seite']
den Wert „startseite“.echo
den Inhalt aus.Alles was danach passiert, passiert nicht mit PHP. Ein Nachladen durch PHP ist hier schlicht nicht möglich.
Was du allerdings machen kannst, ist je nach Parameter einen anderen Inhalt laden:
$seite = isset($_GET['seite']) ? $_GET['seite'] : 'start';
$template = file_get_contents($seite);
// Noch bisschen Verarbeitung...
echo $template
Warnung: Das ist ein schlechtes Beispiel und sollte so niemals in produktiven Einsatz kommen!
Freundliche Grüße
Christian
Tach!
$seite = isset($_GET['seite']) ? $_GET['seite'] : 'start'; $template = file_get_contents($seite); // Noch bisschen Verarbeitung... echo $template
Warnung: Das ist ein schlechtes Beispiel und sollte so niemals in produktiven Einsatz kommen!
Der Grund ist, dass anhand eines vom Anwender veränderbaren Parameters eine Datei eingeladen wird. Das kann dann am Ende auch eine mit einem Inhalt sein, den man nicht veröffentlicht haben möchte. Die bessere Variante wäre, den Parameter gegen eine Liste der erlaubten Dateinamen prüfen.
dedlfix.
ich habe kürzlich in einem PHP-Buch gelesen wie man HTML-Code in eine bestehende HTML-Seite vom eigenen Server mit nur einem Befehl nachladen kann - ohne AJAX, JQuery & Co.
WANN willst Du das machen?
Da ich ich etliche PHP-Bücher habe, war die nachträgliche Suche erfolglos.
Hat jemand eine Idee?
Ich nicht. Ich habe gleich mehrere.
Ich weiss sehr genau was ich will - und ich weiss sehr genau was ich nicht will: Mit Kanonen auf Spatzen schiessen (AJAX). Und wie kommst Du darauf, dass ich nach einem HTML-Befehl gesucht habe?
Und wie kommst Du darauf, dass ich nach einem HTML-Befehl gesucht habe?
Weil du auch html als Thema im Titel gewählt hast. Und php, das zeigt mir deine Unsicherheit, an welcher Stelle man "nachladen" kann.
Linuchs
Tach!
und ich weiss sehr genau was ich nicht will: Mit Kanonen auf Spatzen schiessen (AJAX). Und wie kommst Du darauf, dass ich nach einem HTML-Befehl gesucht habe?
Nun, die Verwirrung liegt wohl an der ungünstigen Wortwahl. Nachladen meint, dass man schon Inhalt hat und anschließend weitere oder andere Inhalte hinzufügt. Und das betrachtet man üblicherweise aus Sicht des Browsers. In deinem Fall geht es dir jedoch darum, erst einmal überhaupt auf dem Server die Inhalte zusammenzustellen. Natürlich kann man das so sehen, dass man da ein Template hat und dieses von sich aus weitere Inhalte hinzulädt und das als Nachladen bezeichnen, oder dass das Zusammenbauen durch nacheinander stehende Lade-Befehle stattfindet. Aber das scheint mir eher unüblich. Mit Nachladen meint man meistens einen deutlichen zeitlichen Versatz zwischen dem ersten Laden und den weiteren, in der Regel erst ausgelöst durch eine Benutzerhandlung.
Aber wie auch immer, es sind ja für alle Fälle entsprechende Möglichkeiten genannt worden. Bei Unklarheiten oder weiteren Problemen einfach nachfragen. Und nicht dran stören, dass wir hier Erbsenzählen. Das liegt halt in der Natur der Sache, dass man sich beim Programmieren sehr genau ausdrücken muss, damit der Computer das macht, was man will.
dedlfix.
ich habe kürzlich in einem PHP-Buch gelesen wie man HTML-Code in eine bestehende HTML-Seite vom eigenen Server mit nur einem Befehl nachladen kann - ohne AJAX, JQuery & Co.
Hmm... vielleicht hat er über die fetch
-API geschrieben. Damit wird aus…
const request = new XMLHttpRequest()
request.open('GET','/foo')
request.send()
request.addEventListener('load', _ => document.querySelector('#bar').innerHTML = request.responseText)
…so etwas hier:
fetch('/foo').then(response => document.querySelector('#bar').innerHTML = response.text())
Hi,
Hmm... vielleicht hat er über die
fetch
-API geschrieben. Damit wird aus…const request = new XMLHttpRequest('GET','/fetch') request.send() request.addEventListener('load', _ => document.querySelector('#bar').innerHTML = request.responseText)
…so etwas hier:
fetch('/foo').then(response => document.querySelector('#bar').innerHTML = response.text())
das hätte dann aber nichts mit PHP zu tun, sondern doch wieder mit Javascript.
So long,
Martin
Nur am Rande
fetch('/foo').then(response => document.querySelector('#bar').innerHTML = response.text())
response.text() ist asynchron & gibt wieder einen Promise zurück. Eher:
fetch('/foo')
.then((response) => response.text())
.then((text) => {
document.querySelector('#bar').innerHTML = text;
})
Wobei hier noch das Error Handling fehlt.