Question

Voici ma question,

Serait-il possible, sachant que l'asp classique prend en charge le javascript côté serveur, de pouvoir générer le " HTML côté serveur " envoyer au client comme   Response.write $ (page) .html ()

Bien sûr, il serait bon d’utiliser jQuery pour le faire car il est facile d’analyser et de manipuler une structure complexe.

Le seul problème auquel je peux penser qui m'empêcherait de le faire serait que l'asp classique ne expose que 3 objets (réponse, serveur, requête) et qu'aucun d'entre eux ne fournit des "installations de construction dom". comme celui que jQuery utilise tout le temps. Comment pourrions-nous éventuellement créer un objet de document vierge?

Modifier : je suis d'accord avec vous pour dire que ce n'est pas une bonne idée en termes de performances. Laissez-moi vous expliquer pourquoi nous en aurions besoin.

Je suis en train de transformer différents flux JSON en un rapport HTML complexe, parfois imbriqué. Côté client, cela fonctionne vraiment bien, même avec un ensemble complexe et un long rapport.

Cependant, certains de nos clients souhaiteraient accéder à la liste "Formaté". signaler en utilisant des outils comme EXCEL (en utilisant une requête Web dépourvue de javascript). Donc, dans ce cas particulier, il faudrait que je puisse répondre.écrire le contenu .html () de ce que serait le travail jQuery.

Était-ce utile?

La solution

Dans de telles situations, j'utilise un DOM XML comme substitut du DOM HTML que j'aurais dans un navigateur.

jQuery peut manipuler un DOM XML, mais jQuery s'attend à ce que la fenêtre soit présente dans son contexte. Il est peut-être possible de tromper jQuery (ou de le modifier) ??pour qu’il fonctionne côté serveur, mais il pourrait être assez fragile.

Personnellement, je viens d'utiliser une petite bibliothèque de fonctions auxiliaires qui rendent la manipulation d'un DOM DOM un peu moins pénible, par exemple en tant que: -

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

Votre code de page peut maintenant: -

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

Au fur et à mesure que vous créerez un code manipulant le DOM 'dans le raw', vous verrez des modèles que vous pouvez re-factoriser en tant que méthodes de la classe XmlWrapper.

Autres conseils

Oui c'est possible. Non, ce ne serait pas rapide du tout et je ne vois aucune raison de le faire car jQuery est souvent utilisé pour faire des choses qui ne concernent que le client.

Je dois vous demander quelle est la raison possible pour cela. Si vous souhaitez créer un document DOM côté serveur plutôt que d'écrire une sortie HTML, il est plus probable qu'il s'agisse d'une bibliothèque XML d'un type que vous pouvez interfacer avec ASP. jQuery est destiné aux applications côté client, alors que le Javascript côté serveur existe, ce n'est pas un cas d'utilisation courant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top