генерировать HTML-документ на стороне сервера с помощью jquery и классического asp

StackOverflow https://stackoverflow.com/questions/159011

Вопрос

Вот мой вопрос,

Было бы возможно, зная, что классическая поддержка 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 на стороне сервера существует и не является распространенным вариантом использования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top