PHP, Ajax - HTML Screenshot (JSON)

String

Erfahrenes Mitglied
Hallo zusammen,

mir fehlt es mal wieder an einer Idee.

Häufig sieht man ja (youTube, Pinterest, Facebook, GMail, ...), dass nur noch Teile der Webseite neu geladen werden (mit Ajax). Gleichzeitig ändert sich oben die URL durch ein Hash-Fragment oder neuerdings mit HTML5 die URL nach der TLD angepasst wird.

Soweit schön und gut, alles kein Problem.

Jetzt kommen die Suchmaschinen oder die Direktaufrufe hinzu. Ein User klickt auf ein Bildchen, ich öffne dieses mit Ajax, hinterlege die Webseite grau/schwarz und mit Javascript wird das Bild darüber gelegt. Darunter werden die Kommentare angezeigt. Die URL wird geändert mit einem Hash.

-> ajax Aufruf, PHP liest Bild, Kommentare etc. aus der DB aus und dann wird als HTML Antwort mit Ajax an die Hauptseite.


Jetzt kommen mehrere Probleme:
- Sollten Scripte mit AJAX nachgeladen werden: eval = evil bla bla..
- Der Direktaufruf funktioniert gar nicht, es gibt keinen HTML-Snapshot (wie google es empfiehlt)

Meine Idee:
Ich Programmiere eine etwas aufwendigere JavaScript-Engine die JSON-Antworten als AJAX verarbeitet ala:
[{"HTML":"<div>Inhalt Bla bla..</div>","Script":"alert('huhu')"}]

Und nu, wie mache ich das am besten mit PHP?
Wie lege ich eine Datei so ab, dass ich sie entweder als JSON oder HTML ausgeben kann-
JSON, bei einem Aufruf über AJAX, HTML bei einem Direktaufruf.

Oder ist meine Idee total idiotisch?

Ich hoffe ich habe mich überhaupt halbwegs verständlich ausgedrückt, mit dem wo jetzt mein Problem liegt :D
Ganz kurz zusammengefasst könnte es auch so heißen:
Wie speichere ich am besten meine Dateien / Templates, so dass ich diese als JSON/XML oder wie auch immer ODER als HTML ausgeben kann. ;)

Danke schonmal für eure Ideen.

paD
 
Ja, das war ja meine Idee. Aber hast du auch eine, wie ich das am besten anstelle?

Nehmen wir an, ich will wirklich ein Bild und die Kommentare dazu mit Ajax laden.
Dann sieht die Datei, die geladen wird evt. so aus:

HTML:
<img src="LINK" />

<div>Kommentar (mit PHP ausgelesen</div>
<div>weiterer Kommentar...</div>

Das wäre ja das HTML-Format, in dem ein Template üblicherweise gespeichert wird.
Da ist von JSON weit und breit keine Spur.
Ich könnte die Templates jetzt als JSON speichern

[{"imgsrc":"LINK", "Kommentar":"Bla bla.."}]

So hätte ich kein HTML mehr. Und genau da komme ich nicht weiter.
Die Daten müssten ja sowohl als auch ausgegeben werden können..

paD
 
Am besten du arbeitest da mit jQuery.

Wenn du dann deinen Tags eine ID zuordnest kannst du über JQuery den Josn laden, ausdbrösmeln und in die entsprechenden Tags abfüllen
 
Ähm.. "ausbrösmeln" ? :D
Ist das sowas wie zerlegen / teilen? ^^

Also meinst du als HTML gespeichert lassen. Die IDs zerlegen und dann in JSON umwandeln?

Oder als JSON speichern? Aber dann habe ich kein HTML für den Direktaufruf/Suchmaschine, wenn ich erst mit jQuery den HTML Code erzeugen muss..?

Verwirrend ;)
 
Mach dich mal schlau über JQuery.
Mittels JQuery kanns du bequem in der DOM-Struktur des HTML-Dokumentes herumwandeln.

SOmit hast du das HTML-Gerüst fix und veränderst nur noch die Werte innerhalb der Tags.

HTML:
<img id="link" src="LINK" />

<div id="coment" >Kommentar (mit PHP ausgelesen</div>
<div id="moreComent" >weiterer Kommentar...</div>

Das dazugehörige JQuery
Javascript:
//TODO das ganze Ajaxgeschmiss das den JSON zurückgibt. In unserem Fall das OBjekt myObj

//Das Attribut src von deinem Link überschreiben
$('#link').attr('src', myObj.link);
//Die Inhalte der div-Tags überschreiben
$('#coment').val(myObj.comment);
$('#moreComent').val(myObj.comment);
 
Zuletzt bearbeitet von einem Moderator:
Okay, soweit so gut. Ohne gleich jQuery zu verwenden ginge das ja auch soweit ohne.

Aber jetzt habe ich z.b. das Problem, dass ein Script mit <script>..</script> im nach geladenen Teil liegt. Dieser würde ja so nicht ausgeführt werden.
Außer ich würde jetzt mit regulären Außdrücken nach <script* suchen..

Und man liest generell relativ häufig, dass davon abgeraten wird Daten im HTML zu übertragen, spricht da was dagegen?
Wenn man mal die oben genannten Seiten beobachtet, laden die meist auch im JSON Format (auch wenn ich bei einigen die Logik nicht verstehe :D)

Scheint da also nicht so wirklich eine "Patent"-Lösung zu geben wie man es richtig macht sondern wirklich, wie ich befürchtet habe, alles ein wenig "gebastelt" ausfällt.

Bei unserem/deinem Beispiel fehlt auch völlig die funktion: "Was soll mit dem geladenen Inhalt passieren". Sollen alle Divs (innerHTML) nur geändert werden? Sollen evt. neue Elemente auf der Hauptseite eingefügt werden (appendChild) und so weiter..

Bin da irgendwie sehr unentschlossen.. -.-

paD
 
Was haltet ihr von einem Format wie XML.
Dann eine AJAX / Javascript "Klasse" die diese ausliest und in HTML einfügt.

Und für HTML:
Eine PHP Klasse die das XML in HTML umwandelt?

Oder ist das weniger sinnvoll?

paD
 
Zurück