使用jquery和classic asp在服务器端生成HTML文档

时间:2020-03-06 14:59:27  来源:igfitidea点击:

这是我的问题,

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

当然,使用jQuery做到这一点很棒,因为解析复杂的结构并对其进行操作很容易。

我能想到的唯一问题将使我无法做到这一点,那就是经典的asp仅公开3个对象(响应,服务器,请求),并且它们都不像jQuery一直使用的那样提供" dom构建工具"。我们怎么可能创建一个空白文档对象?

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

我实际上是将各种JSON提要转换成HTML中的复杂的,有时是嵌套的报告。在客户端,即使设置复杂且报告冗长,它也能很好地工作。

但是,我们的某些客户希望使用EXCEL之类的工具(使用耗尽了所有JavaScript的webquery)来访问"格式化"报告。因此,在那种特定情况下,我将需要能够response.write jQuery工作的.html()内容。

解决方案

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

我必须问你这样做的可能原因是什么?如果要在服务器端构建DOM文档而不是编写HTML输出,则很有可能是可以与ASP接口的某种XML库。 jQuery用于客户端,而服务器端Javascript并不常见。

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