2008-10-01 64 views
1

這裏是我的問題,生成HTML文檔的服務器端使用jQuery和傳統的ASP

是否可以,知道傳統的ASP支持服務器端JavaScript,能夠產生「服務器端的HTML」發送像 Response.write $(page).html()

當然,使用jQuery來做它會很好,因爲它很容易解析複雜的結構並操縱它們。

我能想到的唯一問題就是阻止我這樣做,那就是傳統的asp只暴露了3個對象(響應,服務器,請求),並且沒有一個像jQuery使用的那樣提供了「dom構建工具」時間。我們怎麼可能創建一個空白的文檔對象?

編輯:我不得不同意你的看法,這絕對不是一個好主意。讓我解釋爲什麼我們需要它。

我實際上將各種JSON feed轉換爲複雜的,有時嵌套在HTML中的報表。客戶端它運行得非常好,即使是複雜的設置和長時間的報告。

但是,我們的一些客戶想使用EXCEL等工具訪問「格式化」的報告(使用webquery,其中任何javascript都已耗盡)。因此,在這種特殊情況下,我需要能夠響應.write jQuery工作的.html()內容。

回答

2

我這樣的情況下,我使用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類的方法。

0

是的,這是可能的。不,它不會很快,我也沒有看到有任何理由這樣做,因爲jQuery經常用於處理與客戶端相關的事情。

0

我必須問你有什麼可能的原因嗎?如果你想構建一個DOM文檔服務器端,而不是編寫HTML輸出,那麼它們更可能是一種你可以與ASP接口的XML庫。 jQuery是用於客戶端的東西,而服務器端Javascript存在它不是一個常見的用例。

相關問題