JavaScript Ganz normales PHP Include nur mit Ajax dynamisch ?

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
649
Hey,

ich verwende schon immer php includes, meistens so:

PHP:
HTML...
...
..
<?php

if (!file_exists('./docs/'.$s.'.php')) 
{
	include ('docs/error.php');
}
else 
{
    include ('./docs/'.$s.'.php');
}
?>
...
....
..HTML


also per url übergebe ich z.b. www.blabla.de/index.php?s=kontakt und die kontakt.php wird included.
Nun zu meiner frage, kann ich genau das auch mit ajax dynamisch machen ?
also es wird nicht mehr die ganze seite neu geladen, sondern nur der bereich wo die seite includet wird, während dies passiert kann man ja einfach son ladebalken anzeigen lassen.

Wie mach ich das mit ajax ? Bzw kann ich das überhaupt damit machen ?

Lg

hemorieder
 
Zuletzt bearbeitet:
Naja, um eine Webseite auf AJAX umzustellen sind viele Änderungen notwendig... grundsätzlich geht sowas schon....
 
Das include der serverseitigen ausgabe einfach in den gewünschten node einhängen. damit haste beim umstellen den geringsten aufwand. ABER du hast viel unnötigen traffic.

Da HTMl und XML (im vergleich zu JSON) sehr viel overhead haben
 
ok das klingt ja schonmal positiv, nur wie realisier ich das jetzt ? ;)
 
doch natürlich, aber stell mal genau die frage wo du ein problem hast, denn was ich oben geschrieben habe sind halt schon min 2 datein und 10 zeilen code. Und arbeit habe ich selber genug ;)
 
@nesQuick: Ich denke du spielst leider in einer ganz anderen Liga...
Im Grunde müsste man ihm nen AJAX-Buch oder ähnliches ans Herz legen..
 
Und wie man an den Tutorials sehen kann sind für einen vernünftigen AJAX-Einsatz nun mal doch einge Änderungen an einer Homepage erforderlich...
 
Was redest du da für ein wirres Zeug, das stimmt nämlich überhaupt nicht.

Grundsätzlich brauchst du ne JS Datei oder schreibst den Code direkt ins Markup. Dann brauchst theoretisch nur ein Element mit einer ID versehen und fertig.
 
t R I A S schrieb:
Grundsätzlich brauchst du ne JS Datei oder schreibst den Code direkt ins Markup. Dann brauchst theoretisch nur ein Element mit einer ID versehen und fertig.
und hast wieder massiv overhead, wofür du ajax dann nicht bräuchtest. optimalerweise verschickst du mit der php, die du über ajax aufgerufen hast, reines json und bastelst die das layout dann über die dom in javascript zusammen. der vorteil ist, dass es nur sehr geringen overhead (im vergleich zu html/xml gar keinen) gibt, die anpassungsfähigkeit erhöht, da nur jedes mal das js angepasst werden muss (die daten kommen immer auf die gleiche weise) und die wartbarkeit um einiges erhöht.

aber ja, deinem prinzip nach geht es auch, wenn auch kaum lohnenswert.
 
@t R I A S

Was zur hölle hat das mit AJAX zu tun? o.O Da komm ich nicht mit. AJAX is n Asynctroner HTTP Request. Den du mit der methode nicht hast, also kein AJAX, also nicht das, was gewünscht wurde. Das macht auch performance technisch überhapt keinen mehrwert, denn du würdest den ganzen krams bei jeem request mitladen wobei du wohl nur 1 von 5 brauchst.
 
Noch mehr Anhänger dieses JSON Clans. Für was soll ich Markup bzw. Text serialisieren? Das bringt mir rein gar nichts :) und dafür verwendet man auch kein JSON.

Ich weiss auch nicht auf was ihr beide da hinaus wollt. Er will lediglich Inhalte in eine Seite includen was man in seinem Fall mit PHP wie er sagt oder Frames etc. lösen kann. Er bevorzugt eine AJAX Lösung bzw. möchte wissen wie das geht?

Die Anzahl der Requests (falls du @nesQuick überhaupt weisst was das ist weil ich bei einem Request vllt. ne ID oder so mitschick, massive overhead and performance loss, YO - omg) bleibt immer gleich wenn du neue Daten anforderst, egal ob über PHP oder AJAX.

Lediglich der Response ändert sich und da stecken die Daten drin die JS dann verarbeitet oder welche Sprache das auch immer übernehmen mag.
 
Zuletzt bearbeitet:
Hü,

ich hab mir sowas auch schon mal überlegt, bin aber dann durch's Googlen davon abgekommen, da es einige Probleme nach sich ziehen kann:

  • Suchmaschinen können solche Seiten nicht indizieren
  • Benutzer ohne Javascript können die Seite nicht nutzen
  • der Zurück-Button im Browser funktioniert nicht mehr
  • man kann die Seite nicht mehr direkt verlinken

Ich hab mich dann nicht mehr weiter damit beschäftigt - kann also nicht sagen, ob das alles stimmt oder ob es noch andere Probleme geben kann. Man sollte sich aber, wenn man das umsetzen will, darüber Gedanken machen.


Um AJAX wird in letzter Zeit mMn zu viel Wind gemacht, weil es halt was Neues ist bzw. eine Auferstehung einer vergessenen/tot geglaubten Technologie. Deswegen muss man es aber nicht für alles benutzen. Natürlich gibt es viele sinnvolle Anwendungsmöglichkeiten. Ein einfaches Beispiel wäre Youtube, wo man Videos kommentieren kann und beim Absenden die Seite nicht aktualisiert, und somit das laufende Video nicht abgebrochen wird. Oder Google Suggest bei der Eingabe von Suchbegriffen.

Um einen normalen Seitenaufbau zu realisieren ist - denke ich - AJAX fehl am Platz.
 
Zuletzt bearbeitet:
Ja AJAX ist meiner Meinung nach auch nicht dafür gedacht, aber ist ja egal.

Zu deinen Punkten.

  • Suchmaschinen sind in der Lage die Seiten zu indexieren, nicht alle, aber einige.
  • Ist klar dass ohne JS keine AJAX App läuft, mit dem muss man leben oder man includet halt die Inhalte nach wie vor mit PHP.
  • Das stimmt nicht ganz. Man kann eine History mit JS realisieren die alles bietet was so eine Vor und Zurück Navigation benötigt.
  • Doch man kann die Seite direkt verlinken.

Also eigentlich gibts da keinen einzigen Punkt der nicht zu realisieren wäre, wobei ich von meiner obigen Meinung nach wie vor nicht abspringe.
 
Bei Ajax requests geht es nicht darum markup zu serialieren. Für markup gibt es XSLT aber ich denke auch das macht hier keinen Sinn, da zu komplex. Sinn von Ajax ist es doch neue Daten in bestehende Strukturen zu bringen, also braucht man über Ajax auch kein markup nachzuladen sondern nur dynamischen Inhalt in ein bestehendes markup ;)

Auch gebe ich euch in den punkten recht das Ajax nicht für seitenaufbau genutzt werden sollte, sondern eher für useability geschichten (youtube comments etc)
 
t R I A S schrieb:
Noch mehr Anhänger dieses JSON Clans. Für was soll ich Markup bzw. Text serialisieren? Das bringt mir rein gar nichts :) und dafür verwendet man auch kein JSON.
nein, json ist rein für die daten verantwortlich. json verwendet man deshalb, da der overhead sehr gering wird. nehmen wir mal ein beispiel dafür an (der unten stehende code ist rein semantisch zu verstehen, denn ich hab jetzt keine lust richtiges js o.ä. zu schreiben - peudo code also):

json:
Code:
{{'hans','wurst','12.12.1212','beispielstadt'},{'inge','borg','11.11.1111','testhausen'}}
diese daten bettest du jetzt per javascript über die dom in die seite ein.
Code:
function user_einbetten( daten )
{
  haupt = neuer div();
  haupt.style = 'xyz';

  name = neuer div();
  haupt.anhängen( name );

  // dieser schritt für jedes einzelne element
}

realisierung ohne json (beispiel xml):
Code:
<users>
  <user>
    <firstname>hans</firstname>
    <lastname>wurst</lastname>
    <birthdate>12.12.1212</birthdate>
    <town>beispielstadt</town>
  </user>
  <user>
    <firstname>inge</firstname>
    <lastname>borg</lastname>
    <birthdate>11.11.1111</birthdate>
    <town>testhausen</town>
  </user>
</users>
diesen code müsstest du nun in js auseinander nehmen und ihn ebenso via js einbetten, was aber weitaus komplizierter ist xml erst einmal korrekt zu parsen und dann noch einfach damit zu arbeiten. abseits dessen könntest du deine seite mit xslt ausstatten, wodurch das thema xml parsen wiederum wegfallen würde.

beim thema realisierung mit html wäre dies das gleiche schema, außer dass du mit javascript nur den textinhalt ändern musst anstatt selbst zu basteln. der nachteil ist allerdings der gleiche wie bei xml - du hast einfach massig overhead und rechenzeit liegt komplett brach.

und um overhead zu verringern, weniger traffic zu bekommen und die last mehr auf die userseite zu schieben (ein rechner arbeitet ja nun nicht wenn im internet gesurft wird) anstatt auf die seite des servers (wo mitunter 100 anfragen pro sekunde eintreffen können), wählt man korrekterweise den weg mit json.
t R I A S schrieb:
Ich weiss auch nicht auf was ihr beide da hinaus wollt. Er will lediglich Inhalte in eine Seite includen was man in seinem Fall mit PHP wie er sagt oder Frames etc. lösen kann. Er bevorzugt eine AJAX Lösung bzw. möchte wissen wie das geht?
beispiele und erklärung siehe oben. man kann ajax natürlich einbinden wie man will, nur bringt es dir genau null vorteile, wenn du auf xml/html setzt. dann kannst du gleich die komplette seite neu laden.
t R I A S schrieb:
Die Anzahl der Requests (falls du @nesQuick überhaupt weisst was das ist weil ich bei einem Request vllt. ne ID oder so mitschick, massive overhead and performance loss, YO - omg) bleibt immer gleich wenn du neue Daten anforderst, egal ob über PHP oder AJAX.
massiv overhead und ein performanceeinbruch sind bei letzterer variante stets vorhanden. anstatt ein wenig json zu generieren, generierst du weitere 100 sachen drumherum, die alleinig dem markup dienen.

stellen wir uns mal folgendes szenario vor:
traffickosten: 0,5 € pro mib (vorsicht, reine fantasiezahl)
anfragen pro tag: 1.000.000

webserver 1 (json):
traffic pro request: 89 byte
traffic pro tag: 84,88 mib
kosten pro tag: 42,44 €
kosten pro monat (31d): 1315,60 €

webserver 2 (xml):
traffic pro request: 327 byte
traffic pro tag: 311,85 mib
kosten pro tag: 155,93 €
kosten pro monat: 4833,70 €

und genau hier fasst die lösung mit json fuß. anstatt unnötig geld zu verpulvern und komplettes xml zu schicken, schickst du die daten und auf dem client wird gerendert. du sparst dadurch nur nerven und enorme traffic-kosten (bei seiten mit 100 usern mag das wohl kaum sein, aber bei einer größe wie cb könnte man so wohl mindestens 10.000 € einsparen [weiß grad nicht wieviel der traffic so allgemein kostet]).

Mr. Snoot schrieb:
  • Suchmaschinen können solche Seiten nicht indizieren
google soll das bald(?) können. andere werden nachziehen.
Mr. Snoot schrieb:
  • Benutzer ohne Javascript können die Seite nicht nutzen
es sollte immer einen fallback auf eine lösung ohne javascript geben. seiten die javascript zwingend benötigen, sollten imo sofort gesperrt werden. einfach auch realisierbar durch einen kleinen handler, der z.b. alle standardlinks durch die ajax-äquivalente ersetzt oder einfach einen onclick-handler einbinden. geht ganz einfach von der hand - letzteres ist nur ein wenig aufwändiger.
Mr. Snoot schrieb:
  • der Zurück-Button im Browser funktioniert nicht mehr
wohl wahr, wohl wahr. daran sollten die browser-hersteller schleunigst arbeiten. atm könnte man wohl nur eine eigene history-funktion schreiben. ist zwar aufwändig, aber es kann realisiert werden.
Mr. Snoot schrieb:
  • man kann die Seite nicht mehr direkt verlinken
siehe punkt 2. eine standard-, nicht javascript benötigende form sollte immer vorhanden sein.
Mr. Snoot schrieb:
Um einen normalen Seitenaufbau zu realisieren ist - denke ich - AJAX fehl am Platz.
imo ist ajax überall verwendbar und zwar allein dadurch, dass traffickosten gespart werden können und auch modem-user wieder mit dem internet zufrieden sein können (auf dem dorfe sieht man das ja mal gut und gern und dsl gibts dort ja kaum). so werden ein paar byte an daten gesendet und der browser rendert alles korrekt. du brauchst also keine 100000 flashbanner mehr laden, keine 10000000000 werbe-ads, keine statischen menüs oder sonstiges. der reine inhalt wird neu geladen - das wars auch schon. und die seitenaufbauzeit steigert sich allein dadurch enorm. schnell aufbauende seiten kann es heutzutage also auch noch geben.
 
claw du bringst es auf den Punkt den ich damit ansprechen wollte. JSON verwend ich für Objekte, Strukturen und sonstige datenbezogene Dinge. Aber wenn ich jetzt eine Seite mit Text habe wo noch Formulare und was weiss ich noch drauf ist dann bringt das herzlich wenig.

Und da hier genau solche Seite geladen werden wollen ist JSON der falsche Ansatz. Naja es wurde eigentlich eh alles gesagt. Jetzt liegts am Threadersteller ob er sich die Tutorials anschaut oder nicht.
 
Zuletzt bearbeitet:
Zurück
Oben