创建具有JScript的HTML的XMLHTTP,创建具有JScript的HTML的XMLHTTP
【 tulaoshi.com - ASP 】
griefforyou [原作]
亲爱的 GUI 博士:
我有一个关于 XML 的问题。我通过 XMLHTTP 发布一个 ASP 页面,将数据作为 HTML 发送回来,并在 div、表格单元格或任何元素上执行 object.innerHTML。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)我遇到的问题是,有一次,我在 ASP 服务器页上创建一个表单,并将该表单以 HTML 发送回去,这样做一切正常。但我还希望对该页面进行客户端验证,因此我将一个 JScript 页面链接放到了我打算发送回去的响应 HTML 的正文中。这样做以后,脚本就无法运行了。
当我在父页上包括实际的 JScript src 引用时,它可以正常运行。这是因为 JScript 代码没有加载到运行库吗?能否在响应 XMLHTTP post 时不返回 JScript 代码并使它正常工作?可以为所创建的页面即时生成 JScript 函数吗?
我还没有尝试用另一种方式这样做:通过 XMLHTTP 发布 XML 数据,然后将它作为 XML 数据发送回去,再使用 XSL 样式表进行转换。我猜想,可以用那种方式定义 JScript 函数。但这种方式似乎太繁杂了。您有任何建议或答案吗?
谢谢
Peter Sung
GUI 博士的回复:
是的,Peter,您可以在响应 XMLHTTP post/get 时返回 Microsoft JScript 代码,并使该代码得到执行。这样做就像先拿到一块蛋糕,然后再吃掉它。正像您猜想得那样,这样做的最佳方式是利用 XSL 样式表;一旦您使所有类型恢复正常,这很容易。GUI 博士甚至可以提供一个快捷的示例。(当然,也有其他的解决方案。只要响应按正确的顺序包含正确的标头和字符,浏览器将解译响应,以便响应正常工作。如果需要,您可以利用字符串连接生成响应。)
在下面的示例中,GUI 博士在 ASP 页中将 JScript 用于客户端代码和 VBScript(Microsoft Visual Basic 脚本编写版)。采用的策略是这样的:XML 文件只包含数据(以及对样式表的引用)。XSL 文件包含构成完整页面所必需的所有 HTML 格式(包括位于适当位置的脚本)。ASP 页主要包含几个调用,以创建 XMLHTTP 对象,将 XML 文件载入该对象中(利用隐式样式表),并将结果 HTML 写入响应流。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/asp/)要试用这种方法,请执行下面所示的简单步骤。使用记事本复制和粘贴,并将所有文件保存在 c:inetpubwwwroot 中。
1.
创建一个包含以下 XML 文本且名为 books.xml 的文件。记下对 books.xsl 样式表的引用。除此之外,此文件只包含数据。
<?xml version="1.0"?
<?xml-stylesheet type="text/xsl" href="books.xsl" ?
<catalog
<book id="bk101"
<authorGambardella, Matthew</author
<titleXML Developer's Guide</title
</book
<book id="bk102"
<authorRalls, Kim</author
<titleMidnight Rain</title
</book
</catalog
2.
然后,创建一个包含以下代码且名为 books.xsl 的文件。此文件是第 1 步中创建的 books.xml 所引用的样式表。它包含将上面的 XML 文件正确地格式化为 HTML 页所必需的信息,甚至在该 HTML 页上包括脚本。
<?xml version="1.0" encoding="UTF-8" ?
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:output method="html" indent="yes"/
<xsl:template match="/"
<html
<head
<titleTest</title
</head
<script language="JScript"
function Test_OnLoad()
{
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async=false;
objXML.load("books.xml");
alert(objXML.xml);
objXML=null;
}
</script
<body onload="Test_OnLoad()"
<table border="1"
<xsl:for-each select="catalog/book"
<tr
<td
<xsl:value-of select="author"/
</td
<td
<xsl:value-of select="title"/</td
</tr
</xsl:for-each
</table
</body
</html
</xsl:template
</xsl:stylesheet
3.
最后,创建一个包含以下代码且名为 books.asp 的文件。此文件只用于创建 XMLHTTP 对象,为其加载 XML 文件,并将结果 HTML 写入响应流。
<%
dim sxh
Response.contentType = "text/xml"
set sxh = Server.CreateObject("MSXML2.XMLHTTP.3.0")
sxh.open "GET","http://localhost/books.xml",false
sxh.send
Response.write sxh.responsetext
%
来源:http://www.tulaoshi.com/n/20160129/1507242.html
看过《创建具有JScript的HTML的XMLHTTP》的人还看了以下文章 更多>>