Сохранение необработанного HTML динамически созданной страницы - PullRequest
1 голос
/ 03 марта 2009

Я пишу приложение, которое позволит пользователям редактировать календарь, его описание и некоторые другие вещи. Я использую jquery, php и mysql. Каждый раз, когда пользователь вносит изменения, он асинхронно обновляет базу данных.

Я бы хотел дать им возможность превратить то, что они делают, в PDF. Есть ли способ, которым я могу опубликовать на своем сервере необработанный HTML-код страницы после того, как пользователь внесет изменения?

Я мог бы восстановить страницу, используя только php на сервере, но этот способ был бы проще, если это возможно.

Ответы [ 3 ]

4 голосов
/ 03 марта 2009

Вы можете использовать это, чтобы получить большую часть HTML-кода для страницы:

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

Однако у него не будет открывающих и закрывающих HTML-тегов и типа документа, что, вероятно, не будет иметь значения для вас, поскольку вы можете очень легко воссоздать это обратно на сервер.

Я предполагаю, что вы можете просто использовать тот же AJAX, который вы уже используете, чтобы отправить htmlSource на сервер, как только вы его захватите.

1 голос
/ 03 марта 2009

Вы, безусловно, можете вернуть innerHTML из jQuery любого объекта, который вы можете выбрать, хотя это не кажется лучшим способом (см. Другие ответы для альтернатив).

Остерегайтесь XSS-атак . Если вы просто запускаете HTML-код, не проверяя его в первую очередь, вы оставляете себя открытым для серьезных рисков.

0 голосов
/ 03 марта 2009

Регенерация страницы с сервера будет вашим лучшим выбором. Чтобы иметь хороший опыт загрузки, вы должны иметь возможность отправлять заголовки для Content-Type и размера.

Чтобы ответить на ваш вопрос, я бы использовал буферизацию вывода для захвата вывода ваших скриптов, а затем использовал бы один из многих инструментов, доступных для преобразования HTML в PDF.

...