hotti: MVC Verständnisproblem

Beitrag lesen

hi,

Wie regelt ihr den Zugriff über Ajax?

steht hier

Einfach eine Ajax - Methode im selben Controller oder einen eigenen Controller nur für alle Ajax - Requests?

Meine Philosophie: Request ist Request. Will eine meiner Seiten einen Ajax-Request machen, ist dafür genau dieselbe Klasse zuständig, die auch die Seite selbst ausliefert.

I.d.R. wird die Seite ausgeliefert für einen Request ohne Parameter, also /foo.html ist der Request. Zuständig für die Response sei die Klasse Foo. Sind Parameter im Spiel wird eine Methode namens control() aufgerufen. Der Request mit XHR (Ajax) wird also einen Parameter mitsenden, womit in der Methode control() feststeht, wie die Response auszusehen hat, bspw., wird dazu auch ein anderer Header gesendet (text/plain oder text/xml anstelle text/html).

Etwas komplizierter wirds, wenn /foo.html eine Anwendung ist, wo ohnehin schon Parameter im Spiel sind. Damit nun nicht die ganze Paramter-Kontrollstruktur doppelt programmiert werden muss, wird vor dem Zusammenstellen der Response ein zusätzlicher Request-Header befragt:

x-serialized: prop

habe ich den genannt, und der wird nur gesendet, wenn der Request vom XHR ausgeht. Ist dieser Header gesetzt, werden keine kompletten Seiten als Response geliefert, sondern es wird nur der STASH (Datenversteck, ein Attribut des Response-Objekts, Instanz der Klasse Foo) serialisiert. Das kann dann XML, JSON oder sonstwas sein, wo Du wolle.

Im Prinzip ist es doch nichts anderes als eine HTML Seite (also Viel Ebene) nur halt im XML oder JSON Format!?

Genau: Ein XHR-Request will nur die Daten, nicht die kompletten Seiten.