使用jquery和classic asp在服务器端生成HTML文档
这是我的问题,
知道经典的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类的方法的模式。