Ich verwende Kohana , aber diese Frage gilt für Rails, CI oder jedes andere MVC-Webentwicklungs-Framework. Wo ist der beste Ort, um die serverseitigen AJAX-Skripte zu kleben?
Ich plante bei der Erstellung eines Ajax_Controllers und der Verwendung einer Methode / Aktion für jedes einzelne Skript.
Ein Anmeldeformular auf der Startseite index.php/home
würde beispielsweise ein XMLHttpRequest an index.php/ajax/login
und das Profilformular für das Profil index.php/profile/edit
senden. sendet ein XMLHttpRequest an index.php/ajax/editprofile
. Was ist die beste Praxis?
Ich verwende Kohana nicht, aber was ich in meinem Framework mache ist, dass AJAX-Skripte Controller sind. Ich versuche, sie als eigenständige Controller zu behandeln, aber am Ende sind sie nur Controller.
Ich neige dazu, meine Ajax-Aktionen in denselben Controller zu legen wie die Nicht-Ajax-Aktionen für ein bestimmtes Modell.
Wenn ich kann, versuche ich, dieselben Aktionen zu verwenden und nur den Ausgabetyp zu ändern. Die meisten Aufgaben sollten sowieso eine Nicht-Ajax-Version haben, daher funktioniert das ziemlich gut. Sehr praktisch zum Reduzieren der logischen Duplizierung.
AJAX überschreitet alle MVC-Grenzen. Das heißt, es geht nicht nur um Modell, Ansicht oder Controller.
Wie beim Senden der Skripte (Javascript-Dateien) selbst, wird dies wahrscheinlich direkt vom Webserver und nicht von Ihrem MVC-Framework aus gehandhabt.
Machst du verschiedene Controller für GET- und POST-Anfragen? Ich nicht. Meiner Meinung nach sollten JS-Anfragen auch nicht anders behandelt werden.
Ich persönlich sehe JS-Anfragen wie GET, POST oder jede andere Art von Anfrage. Wenn ich also benutzerbezogene JS-basierte Aktionen habe, erzeuge ich sie einfach im Benutzer-Controller.
Wenn Sie die AJAX (Javascript) -Skripte selbst meinen, sollten diese in Ihren public / js-Ordner gehen. Wenn Sie jedoch die Aktionen meinen, die von diesen AJAX-Anfragen aufgerufen werden, sollten sie wie alle anderen Aktionen der jeweiligen Controller behandelt werden. Um vollständig REST-konform zu sein, sollten Sie ein anderes Format (json, xml usw.) als Rückgabewerte für diese Aktionen verwenden.
Ich bin ein Noob, aber basierend auf meinem Verständnis, Ajax mit PHP mvc zu erreichen ... Denkschritte könnten sein:
Also,
%Vor%Die Verwendung eines separaten Controllers ist eine gute Idee. Ich organisiere meine Controller entweder nach Funktion und dann nach Rückgabetyp.
Außerdem kann ich bei der Verwendung von Pylons eine Aktion mit @jsonify dekorieren, die automatisch die Konvertierung von Python-Objekten in JSON übernimmt. Sehr praktisch.
Ich möchte alle meine Ajax-Anfragen in einem Controller behalten und ihre Anfragen typischerweise über ein gemeinsam genutztes Modell (das auch der Nicht-Ajax-Controller verwendet) versenden
Der Hauptunterschied ist die Ansicht, die über den Ajax-Controller (HTML-Fragmente, JSON-Daten usw.) oder den Nicht-Ajax-Controller (ganze Seiten) zustande kommt
Sie könnten es als allgemeine REST-API einpacken und RESTful-Konventionen und URIs verwenden. Beispiel:
Anstelle von index.php / ajax / editprofile könnte es eine PUT-Anfrage an index.php / api / profile / Profilname sein.
Tags und Links php model-view-controller ajax design-patterns