网络编程
位置:首页>> 网络编程>> XML编程>> 试试把xml和javascript写到同一个文件里面

试试把xml和javascript写到同一个文件里面

作者:emu 来源:emu博客 发布时间:2009-10-02 16:53:00 

标签:xml,javascript,服务器

服务器现在同时输出json和xml两种数据,取决于服务程序和页面之间的约定。在程序遇到问题的时候会返回错误信息,也按照相同的约定会返回json或者xml格式的数据。比如当页面请求xml的时候服务会返回:

<?xml version="1.0" encoding="gb2312"?><error>出错了</error>

 而当页面请求的是json的时候服务器会返回

alert("出错了")

但是今天遇到的问题是,服务器本身出了问题,比如说遇到内部服务器错误或者资源不存在,又不想返回对解决问题帮助不大的500或者404响应,而想像上面一样返回一个一致性的带错误说明的200响应。由于无从得知现在应该返回xml还是json格式的出错信息。于是服务器就统一返回了一个xml格式的错误。但是页面这个时候是用script标签在请求一个json数据,接收到一个xml文件,直接就产生语法错误了。改成json的话,请求xml的地方也无法提供正确的错误提示。

这个时候我们需要的就是服务器返回一个同时符合javascript和xml语法的错误信息,或者说把xml和javascript的错误信息放到一起。

嗷嗷研究过把css和javascript放在一个文件里面,主要是为了可以较少一个http请求。把xml和javascript放在一起有一些不同。

最容易想到的是“<!-- ”注释符。由于历史原因,这个xml里面的注释符在javascrip里面是一个单行注释符,也就是说在javascript里面,它以回车符为结束,而在xml里面是以-->结束。因此如果用这样一个符号开始一个文件,我们就可以通过控制它的结束位置来控制它在不同语法下面的意义。

error.xml

<!-- --><error>出错了</error><!-- 
alert("出错了")//-->

 注意,从xml的角度上来看,这个xml没有带<?xml部分,因此不能制定encoding编码,只能用默认的utf-8编码输出。或者用实体替换和转义符来回避编码问题:

error.xml

<!-- --><error>&amp;#x51fa;&amp;#x9519;&amp;#x4e86;</error><!-- 
alert("\u51fa\u9519\u4e86")//-->

 之所以刻意不带<?xml,是因为按照规范<?xml必需出现在最开始部分,虽然IE可以允许<?xml前面出现<!-- -->注释,但是FF就没有这样的灵活性了。

简单的在IE下面用两种语法处理这个文件的一个例子:

<HTML>
<HEAD>
<TITLE> test </TITLE>
<META NAME="Author" CONTENT="emu">
</HEAD>
<BODY>
<xml src="error.xml" id="err"></xml>
<SCRIPT LANGUAGE="JavaScript" src="error.xml" charset="utf-8"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
alert(err.getElementsByTagName("error")[0].xml)
</SCRIPT>
</BODY>
</HTML>

0
投稿

猜你喜欢

  • 注:我指一个网站被第三方网站以iframe的形式调用时,被调用网站的禁止策略 和 调用网站的突破禁止策略,跟XSS麽关系,但跟clickja
  • 如何让图片自动缩放以适合界面大小,拿出你的Editplus,打开c_function.asp文件,找到UBBCode函数,在第417行有如下
  • 最近由于单位数据库硬盘空间不足,整理的时候查了许多文章,也进行了测试,整理后得出一些经验供大家参考。首先,在网上看到一篇文章,如何Shrin
  • 阅读上一篇:AJAX的jQuery实现入门(一)要写入数据库,我们知道的最简单的就是注册了, 就做个最简单的注册表单, 看看是如何提交数据的
  • 如果出现  automation服务器不能创建对象 解决方法:1、如果是Scripting.FileSystemObje
  • 今天彬Go将和大家一起讨论网页设计趋势中很重要的环节,那就是”勾引”用户的按钮。所谓”勾引”用户的按钮,其实对于Web设计师来说,就是如何设
  • 在IE下测试,发现最大值是:18014398509481984(0x40000000000000)另外发现一个奇怪的问题:JS世界居然不存在
  • 摘要: Portal是IT领域的新技术,是企业信息化工作的发展方向之一。本文首先介绍了Oracle Portal的定义、特点,接着阐述了po
  • 1.having 子句的用法 having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组
  • 现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的
  • 以前的服务器,由于内存的价格过高,一般配置的内存不是很多,超过4GB的当然就不多了.现在的服务器,配置超过4GB就很多,在配作SQL 数据库
  • This is a {t}. {name}是一个很强大的字符串模板解析方法。它接受三个参数,分别是{args.text},{args.obj
  • 一个页面执行一次Sql语句的话,不会影响到性能。如果一个页面要执行很多次Sql语句,而且使用的是同一个数据库连接,那么上面的方法可能会影响到
  • 一、数据库远程管理技术 对于中小型应用,比如一个网站的建设和维护,这种大型应用平台就显得有些尾大不掉,开销也过于庞大。曾经在互联网技术和Ja
  • 微软今天发布了SQL Server 2005 SP3的正式版,而这也将是该软件的最后一次升级服务,不过暂时只有英文版本,需要简体中文版的用户
  • 有没有办法更快一点? 有没有办法一次性收缩所有数据库? 代码如下:alter database 数据库名 set recovery simp
  • 其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_N
  • 由于工作需要,这两天在看GOOGLE MAP 的 API,需要在公司的网站上使用地图。今天把看过之后的一点使用方法,跟大家一起分享:演示地址
  • 用字符串就可以轻松地获取每一个文件的名称和扩展名,但不要乱用:<%Function getFilename(text)tex
  • 函数javascript函数相信大家都写过不少了,所以我们这里只是简单介绍一下.创建函数:function f(x) {........}v
手机版 网络编程 asp之家 www.aspxhome.com