创建具有JScript的HTML的XMLHTTP

mvp小俊

mvp小俊

2016-01-29 18:46

创建具有JScript的HTML的XMLHTTP,创建具有JScript的HTML的XMLHTTP
 

griefforyou [原作]

亲爱的 GUI 博士:

我有一个关于 XML 的问题。我通过 XMLHTTP 发布一个 ASP 页面,将数据作为 HTML 发送回来,并在 div、表格单元格或任何元素上执行 object.innerHTML。

(本文来源于图老师网站,更多请访问https://m.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 写入响应流。

要试用这种方法,请执行下面所示的简单步骤。使用记事本复制和粘贴,并将所有文件保存在 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 写入响应流。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/asp/)

<%
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
%

展开更多 50%)
分享

猜你喜欢

创建具有JScript的HTML的XMLHTTP

ASP
创建具有JScript的HTML的XMLHTTP

创建具有 JScript 的 HTML 的 XMLHTTP

Web开发
创建具有 JScript 的 HTML 的 XMLHTTP

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

创建不了XMLHTTP控件

Web开发
创建不了XMLHTTP控件

创建具有托盘的服务程序

编程语言 网络编程
创建具有托盘的服务程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用CB制作具有HTML风格的动态按钮

编程语言 网络编程
用CB制作具有HTML风格的动态按钮

使用createElement动态创建HTML对象

Web开发
使用createElement动态创建HTML对象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ASP程序中同一个用户不允许同时登陆两次

ASP程序中同一个用户不允许同时登陆两次

简易教程:如何卸载IE7 Beta 1

简易教程:如何卸载IE7 Beta 1
下拉加载更多内容 ↓