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

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

 

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

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

alert("出错了")

但是今天遇到的问题是,服务器本身出了问题,打个比方,比如说遇到404或者500错误,无从得知现在应该返回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 > &#x51fa;&#x9519;&#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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值