pesar por você [Original]
Caro Dr. GUI:
Tenho uma pergunta sobre XML. Publico uma página ASP via XMLHTTP, envio os dados de volta como HTML e faço object.innerHTML em uma div, célula de tabela ou qualquer elemento.
O problema que estou tendo é que depois de criar um formulário em uma página do servidor ASP e enviar o formulário de volta como HTML, tudo funciona bem. Mas também quero a validação da página no lado do cliente, então coloco um link de página JScript no corpo do HTML de resposta que pretendo enviar de volta. Depois de fazer isso, o script não será executado.
Quando incluo a referência JScript src real na página pai, ela funciona bem. Isso ocorre porque o código JScript não é carregado no tempo de execução? É possível responder a uma postagem XMLHTTP sem retornar o código JScript e fazê-lo funcionar? As funções JScript podem ser geradas dinamicamente para as páginas que eu crio?
Outra maneira que não tentei fazer isso é postar os dados XML via XMLHTTP, enviá-los de volta como dados XML e usar uma folha de estilo XSL para transformá-los. Acho que é possível definir funções JScript dessa forma. Mas esta abordagem parece demasiado complicada. Você tem alguma sugestão ou resposta?
Obrigado pela
resposta do Dr.
Peter Sung
GUI:Sim, Peter, você pode retornar o código Microsoft JScript em resposta ao post/get XMLHTTP e executar esse código. Fazer isso é como pegar um pedaço de bolo e comê-lo mais tarde. Como você pode imaginar, a melhor maneira de fazer isso é aproveitar uma folha de estilo XSL; isso é fácil quando todos os tipos voltam ao normal. Dr. GUI pode até fornecer um exemplo rápido. (Claro, existem outras soluções. Contanto que a resposta contenha os cabeçalhos e caracteres corretos na ordem correta, o navegador interpretará a resposta para que funcione corretamente. Você pode aproveitar a concatenação de strings para gerar a resposta, se necessário. )
Abaixo Em seu exemplo, o Dr. GUI usa JScript para código do lado do cliente e VBScript (Microsoft Visual Basic Scripting Edition) em uma página ASP. A estratégia adotada é esta: o arquivo XML contém apenas dados (e uma referência à folha de estilos). O arquivo XSL contém toda a formatação HTML necessária para formar uma página completa (incluindo scripts instalados). Uma página ASP consiste essencialmente em algumas chamadas para criar um objeto XMLHTTP, carregar um arquivo XML no objeto (usando uma folha de estilos implícita) e gravar o HTML resultante no fluxo de resposta.
Para tentar este método, siga as etapas simples mostradas abaixo. Use o Bloco de notas para copiar, colar e salvar todos os arquivos em c:inetpubwwwroot.
1.
Crie um arquivo chamado books.xml que contenha o texto XML a seguir. Anote a referência à folha de estilo books.xsl. Fora isso, este arquivo contém apenas dados.
<?xml versão="1.0"?>
<?xml-stylesheet type="text/xsl" href="books.xsl" ?>
<catálogo>
<livro id="bk101">
<autor>Gambardella, Mateus</autor>
<title>Guia do desenvolvedor XML</title>
</livro>
<livro id="bk102">
<autor>Ralls, Kim</autor>
<title>Chuva da meia-noite</title>
</livro>
</catalog>
2.
Em seguida, crie um arquivo chamado books.xsl que contenha o código a seguir. Este arquivo é a folha de estilo referenciada pelo books.xml criado na etapa 1. Ele contém as informações necessárias para formatar corretamente o arquivo XML acima em uma página HTML e até mesmo incluir scripts na página HTML.
<?xml versão="1.0" codificação="UTF-8" ?>
<xsl:stylesheet versão="1.0"
xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<cabeça>
<título>Teste</título>
</head>
<linguagem de script="JScript">
função Test_OnLoad()
{
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async=false;
objXML.load("livros.xml");
alerta(objXML.xml);
objXML=nulo;
}
</script>
<body onload="Test_OnLoad()">
<borda da tabela="1">
<xsl:for-each select="catalog/book">
<tr>
<td>
<xsl:valor-de select="autor"/>
</td>
<td>
<xsl:valor-de select="title"/></td>
</tr>
</xsl:for-each>
</tabela>
</body>
</html>
</xsl:template>
</xsl:folha de estilo>
3.
Por fim, crie um arquivo chamado books.asp que contenha o código a seguir. Este arquivo é usado apenas para criar o objeto XMLHTTP, carregar o arquivo XML para ele e gravar o HTML resultante no fluxo de resposta.
<%
escuro sxh
Response.contentType = "texto/xml"
definir sxh = Server.CreateObject("MSXML2.XMLHTTP.3.0")
sxh.open "GET"," http://localhost/books.xml",falso
sxh.enviar
Resposta.write sxh.responsetext
%>
4.
Abra seu navegador e navegue até http://localhost/books.asp .
5.
Você verá um alerta mostrando os dados que contêm books.xml. Isso é feito por um script no arquivo XSL. Você também verá os dados formatados em uma tabela na página da web. Isso é feito por código XSL.