генерировать HTML-документ на стороне сервера с помощью jquery и классического asp
-
03-07-2019 - |
Вопрос
Вот мой вопрос,
Было бы возможно, зная, что классическая поддержка ASP Server JavaScript, чтобы иметь возможность генерировать «HTML на стороне сервера» для отправки клиенту, например, response.write $ (page) .html ()
Конечно, было бы здорово использовать для этого jQuery, поскольку с его помощью можно легко анализировать сложную структуру и манипулировать ею.
Единственная проблема, о которой я могу подумать, которая помешает мне сделать это, заключается в том, что классический asp предоставляет только 3 объекта (ответ, сервер, запрос), и ни один из них не предоставляет «средства построения домена», подобные тому, который jQuery использует все время.Как мы могли бы создать пустой объект документа?
Редактировать :Я должен согласиться с вами, что с точки зрения производительности это определенно не очень хорошая идея.Объясню, зачем нам это нужно.
На самом деле я преобразую различные каналы JSON в сложные, иногда вложенные отчеты в HTML.Клиентская часть работает очень хорошо, даже со сложным набором и длинными отчетами.
Однако некоторые наши клиенты хотели бы получить доступ к «отформатированному» отчету с помощью таких инструментов, как EXCEL (с использованием веб-запросов, в которых отсутствует какой-либо JavaScript).Итак, в этом конкретном случае мне нужно будет иметь возможность ответить. написать содержимое .html() того, что будет работать jQuery.
Решение
В таких ситуациях я использую XML DOM в качестве суррогата HTML DOM, который у меня будет в браузере.
jQuery может манипулировать XML DOM, однако jQuery ожидает присутствия окна в его контексте.Возможно, удастся обмануть jQuery (или настроить его), чтобы он работал на стороне сервера, но он может оказаться весьма хрупким.
Лично я просто использую небольшую библиотеку вспомогательных функций, которые делают манипулирование XML DOM немного менее болезненным, например:
function XmlWrapper(elem) { this.element = elem; }
XmlWrapper.prototype.addChild = function(name) {
var elem = this.element.ownerDocument.createElement(name);
return new XmlWrapper(this.element.appendChild(elem));
}
Теперь код вашей страницы может: -
var dom = Server.CreateObject("MSXML2.DOMDocument.3.0");
dom.loadXML("<html />");
var html = XmlWapper(dom.documentElement);
var head = html.addChild("head");
var body = html.addChild("body");
var tHead = body.addChild("table").addChild("tHead");
Создавая код, который манипулирует DOM «в необработанном виде», вы увидите шаблоны, которые можно рефакторить как методы класса XmlWrapper.
Другие советы
Да, это возможно.Нет, это будет совсем не быстро, и я не вижу для этого никаких причин, поскольку jQuery часто используется для выполнения задач, которые актуальны только для клиента.
Я должен спросить, какая возможная причина у вас для этого?Если вы хотите создать серверный документ DOM, а не писать вывод HTML, скорее всего, вам понадобится какая-то библиотека XML, которую вы можете взаимодействовать с ASP.jQuery предназначен для работы на стороне клиента, тогда как Javascript на стороне сервера существует и не является распространенным вариантом использования.