2009-03-02 9 views
1

Ich schreibe eine Anwendung, mit der Benutzer einen Kalender, seine Beschreibung und einige andere Dinge bearbeiten können. Ich benutze jquery, php und mysql. Jedes Mal, wenn der Benutzer eine Änderung vornimmt, aktualisiert er die Datenbank asynchron.Speichern von HTML-Rohdaten einer dynamisch erstellten Seite

Ich würde ihnen gerne die Möglichkeit geben, aus dem, was sie machen, ein PDF zu machen. Gibt es eine Möglichkeit, den Roh-HTML-Code der Seite an meinen Server zu senden, nachdem der Benutzer Änderungen vorgenommen hat?

Ich könnte die Seite mit nur PHP auf dem Server neu generieren, aber dieser Weg wäre einfacher wenn möglich.

+0

Bitte geben Sie genauer an, was Sie zu erreichen versuchen. –

Antwort

4

diese Weise können Sie die meisten der HTML für die Seite zu bekommen:

var htmlSource = document.getElementsByTagName('html')[0].innerHTML; 

aber es das Öffnen und Schließen HTML-Tags fehlen werden und Doctype, die Ihnen nicht wahrscheinlich egal, wie Sie können Erstelle das sehr einfach wieder auf dem Server.

Ich nehme an, Sie können einfach den gleichen AJAX verwenden, den Sie bereits verwenden, um htmlSource an den Server zu senden, sobald Sie es ergriffen haben.

0

Das Regenerieren der Seite vom Server wird Ihre beste Wette sein. Um eine gute Download-Erfahrung zu haben, sollten Sie in der Lage sein, Header für Content-Type und Größe zu senden.

Um Ihre Frage zu beantworten, würde ich output buffering verwenden, um die Ausgabe Ihrer Skripts zu erfassen, und dann eines der vielen Tools verwenden, um HTML in PDF zu konvertieren.

1

Sie können sicherlich die innerHTML von jQuery jedes Objekt, das Sie auswählen können, zurück, obwohl es nicht wie der beste Weg zu gehen scheint (siehe andere Antworten für Alternativen).

Achten Sie auf XSS attacks. Wenn Sie den HTML-Code einfach nur vor und zurück laufen lassen, ohne ihn vorher zu überprüfen, sind Sie großen Risiken ausgesetzt.

+0

Guter Punkt auf der XSS-Lücke. Zu diesem Zweck gibt es verschiedene Browser-Plug-Ins, die die Seite ändern. Der Punkt ist, dass die Seite, die Sie erhalten, möglicherweise nicht genau das ist, was Sie erwarten. Wenn Sie es neu generieren, werden Sie dieses Problem nicht haben. – jdigital

+0

Ein gültiges Anliegen. Ich erlaube nur vertrauenswürdigen Parteien, diesen ATM zu benutzen. –

Verwandte Themen