zoukankan      html  css  js  c++  java
  • 试试把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>
  • 相关阅读:
    Java的多线程机制系列:(二)缓存一致性和CAS
    Java的多线程机制系列:(一)总述及基础概念
    pydev常用快捷键
    利用python的pyinotify模块监控文件夹和文件的变动
    Linux 下文件名乱码(无效的编码)的解决办法
    ubuntu 中文界面下中文文件夹改英文
    SystemParametersInfo
    jsp:forward与缓冲区
    kafka:(9) 流式处理
    kafka:(8) 事务、幂等
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603201.html
Copyright © 2011-2022 走看看