这是我的问题,

知道经典的asp支持服务器端javascript,能够生成“服务器端HTML”是否可行?像发送给客户端   Response.write $(page).html()

当然,使用jQuery来实现它会很棒,因为它很容易解析复杂的结构并对它们进行操作。

我能想到的唯一一个阻止我这样做的问题就是经典的asp只暴露了3个对象(响应,服务器,请求),而且它们都没有提供“dom建筑设施”。就像一个jQuery一直使用的那样。我们怎么可能创建一个空文档对象?

编辑:我必须同意你的观点,这绝对不是一个好主意。让我解释为什么我们需要它。

我实际上是将各种JSON提要转换为HTML中复杂的,有时是嵌套的报表。客户端它工作得很好,即使是复杂的设置和长报告。

但是,我们的一些客户希望访问“格式化”的客户端。报告使用像EXCEL这样的工具(使用耗尽任何javascript的webquery)。所以在这种特殊情况下,我需要能够响应。编写jQuery工作的.html()内容。

有帮助吗?

解决方案

在这种情况下,我使用XML DOM作为浏览器中HTML DOM的代理。

jQuery可以操作XML DOM,但jQuery期望窗口存在于其上下文中。有可能欺骗jQuery(或调整它),以便它可以在服务器端工作,但它可能非常脆弱。

Personnally我只是使用一个辅助函数的小库,这使得操作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输出,那么更有可能是某种可以与ASP连接的XML库。 jQuery用于客户端,而服务器端Javascript不是常见的用例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top