Domanda

Ecco la mia domanda,

Sarebbe possibile, sapendo che asp classico javascript lato server di supporto, essere in grado di generare " HTML lato server " per inviare al cliente come   Response.write $ (pagina) .html ()

Naturalmente sarebbe bello usare jQuery per farlo perché è facile analizzare strutture complicate e manipolarle.

L'unico problema a cui riesco a pensare che mi impedirebbe di farlo sarebbe che il classico asp espone solo 3 oggetti (risposta, server, richiesta) e nessuno di essi fornisce "dom building facilities" come quello che jQuery usa sempre. Come potremmo eventualmente creare un oggetto documento vuoto?

Modifica : Devo essere d'accordo con te sul fatto che non è sicuramente una buona idea una prestazione saggia. Lasciami spiegare perché ne avremmo bisogno.

In realtà sto trasformando vari feed JSON in report complicati, a volte nidificati in HTML. Lato client funziona davvero bene, anche con set complicati e report lunghi.

Tuttavia, alcuni dei nostri clienti vorrebbero accedere a " formattato " segnala usando strumenti come EXCEL (usando webquery che sono esauriti di qualsiasi javascript). Quindi, in quel caso particolare, avrei bisogno di essere in grado di response.write il contenuto .html () di quello che sarebbe il lavoro di jQuery.

È stato utile?

Soluzione

In tali situazioni utilizzo un DOM XML come surrogato del DOM HTML che avrei in un browser.

jQuery può manipolare un DOM XML, tuttavia jQuery si aspetta che la finestra sia presente nel suo contesto. Potrebbe essere possibile ingannare jQuery (o modificarlo) in modo che funzioni sul lato server ma potrebbe essere piuttosto fragile.

Personalmente uso solo una piccola libreria di funzioni di supporto che rendono un po 'meno doloroso manipolare un DOM XML, ad esempio come: -

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));
}

Ora il codice della tua pagina può fare: -

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");

Man mano che crei il codice che manipola il DOM 'nel raw' vedrai dei pattern che puoi ricodificare come metodi della classe XmlWrapper.

Altri suggerimenti

Sì, è possibile. No, non sarebbe affatto veloce e non vedo alcun motivo per farlo poiché jQuery è spesso usato per fare cose che sono rilevanti solo sul client.

Devo chiederti quale possibile motivo hai per farlo? Se si desidera creare un documento DOM lato server anziché scrivere output HTML, è più probabile che si tratti di una libreria XML di qualche tipo che è possibile interfacciare con ASP. jQuery è per roba lato client, mentre Javascript lato server esiste non è un caso d'uso comune.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top