1

这是我的问题,

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

当然,使用 jQuery 来做这件事会很棒,因为它很容易解析复杂的结构并操纵它们。

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

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

我实际上正在将各种 JSON 提要转换为复杂的,有时是 HTML 中的嵌套报告。客户端它工作得非常好,即使是复杂的集合和长的报告。

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

4

3 回答 3

2

在这种情况下,我使用 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 类的方法的模式。

于 2008-10-03T10:43:26.230 回答
0

是的,有可能。不,它根本不会很快,我看不出有任何理由这样做,因为 jQuery 通常用于做只与客户端相关的事情。

于 2008-10-01T18:47:30.960 回答
0

我不得不问你这样做的可能原因是什么?如果您想在服务器端构建 DOM 文档而不是编写 HTML 输出,则更有可能是某种可以与 ASP 交互的 XML 库。jQuery 用于客户端的东西,而服务器端的 Javascript 存在它不是一个常见的用例。

于 2008-10-01T21:15:57.250 回答