2009-08-06 4 views
0

Ich wurde beauftragt, eine Webanwendung zu einem "moderneren" AJAX Web 2.0-Angebot zu migrieren. Die Anwendung wie derzeit verwendet PHP, um Daten aus der Datenbank zu ziehen, den Benutzer mit Formularen zu präsentieren und dann die Datenbank basierend auf diesen Formulareinreichungen zu aktualisieren. Frames werden verwendet, um ein persistentes Hauptnavigationsmenü und einen Inhaltsbereich zu haben, in dem das eigentliche PHP-Skript grundsätzlich nach $ _POST-Informationen sucht; Wenn es keine gibt, zeigt es die Daten der Benutzerdatenbank an, andernfalls aktualisiert es Daten (sofern es sich um richtige Daten handelt) und zeigt dann dem Benutzer das Ergebnis an. Es gibt einfache Get-Navigationen, die Teilmengen anzeigen.Migration von POST-Formularen zu CSS

Um dies zu einer AJAX-Site mit einem CSS-Layout mit den Inhaltsänderungen innerhalb eines Div zu migrieren, bin ich von der Verwendung von POST ausgeschlossen, weil das die gesamte Seite aktualisiert, nicht wahr? (Ich meine, ich könnte, aber das wäre verschwenderisch - ich brauche nicht die ganze Seite neu zu generieren, wenn nur ein kleiner Teil ändert.) Im Grunde verwendet die ganze Aufgabe Javascript, um die Formularinformationen zu lesen, senden Sie ein XML-HTTP Anfrage und Ergebnisse anzeigen? Das klingt nach einer Menge Neuschreiben der bestehenden PHP-Funktionalität in Javascript, die ich gerne vermeiden würde.

Habe ich die Aufgabe richtig verstanden? Gibt es Bibliotheken oder Frameworks, die mir helfen können?

Antwort

1

Sie haben hier zwei Probleme, die in mancher Hinsicht verwandt sind, aber nicht einfach zusammengelegt werden sollten.

  • CSS für das Layout
  • Nur Laden Teil der Seiten, wenn das formular

abgegeben ich auf der separat funktionieren würde (während der andere im Auge behalten, wie Sie tun so)

Zunächst schlage ich vor, dass Sie sich darauf konzentrieren, auf Web-Standards basierende Seiten zu verschieben - ohne Ajax einzuführen.

Es ist wahr, dass beim Laden der ganzen Seite einige Ineffizienzen auftreten können, aber dieser Ansatz ist einfach und relativ einfach zu debuggen.

Während Sie dies tun, sollten Sie Ihre Anzeige und Geschäftslogik trennen. Das MVC-Muster funktioniert dafür gut.

CakePHP ist ein beliebtes MVC-Framework, das helfen könnte.

Sobald Sie ein funktionierendes System haben, können Sie sich Sorgen über die Verwendung von Ajax machen. Befolgen Sie die Prinzipien von progressive enhancement.

Wenn Sie unsere Anzeigelogik von der Geschäftslogik getrennt haben, sollten Sie es relativ einfach finden, Ihren vorhandenen Code mit einer anderen Ansicht wiederzuverwenden, die die von Ihnen gewünschten Daten in einem JavaScript-freundlichen Format (wie JSON) bereitstellt.

Sie können dies bearbeiten, um die Teile der Seite zu aktualisieren, die Ihnen wichtig sind.

Frameworks, die Ihnen helfen können, gehören YUI und jQuery.

Ich schrieb ein simple example letztes Jahr. Die Zeilen 51 ff. Der main script pumpen Daten entweder in eine HTML template für die direkte Verarbeitung durch den Browser oder ein JSON-Modul für processing with JS. Es gibt dort nicht viel Doppelaufwand, da der Code zum Betrachten der vom Benutzer gesendeten Parameter und zum Extrahieren von Daten aus der DB auf dieser Basis gemeinsam genutzt wird.

+0

OK, ich denke, ich sehe, was Sie hier sagen. Migrieren Sie zuerst das Layout nach css und behalten Sie die regulären POST-Formulare bei. Mach dir keine Sorgen darüber, die gesamte Seite mit POST neu zu laden. Sobald das gesamte Layout migriert ist, migrieren Sie nacheinander jedes Formular in eine AJAX-Anfrage. Ist das in Ordnung? – user151841