emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          服務器現在同時輸出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>

           

           

          posted on 2008-01-18 22:07 emu 閱讀(2801) 評論(2)  編輯  收藏

          評論

          # re: 試試把xml和javascript寫到同一個文件里面 2008-01-19 13:38 any
          XML不符合W3C的標準  回復  更多評論
            

          # re: 試試把xml和javascript寫到同一個文件里面 2008-02-01 12:44 good
          不錯!!!  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 沽源县| 乃东县| 自治县| 兴海县| 五河县| 扎赉特旗| 都江堰市| 临泉县| 渑池县| 运城市| 响水县| 阿坝县| 遵化市| 石景山区| 吕梁市| 铁力市| 宁河县| 彩票| 北碚区| 巴彦县| 石嘴山市| 中宁县| 平舆县| 临江市| 噶尔县| 汪清县| 广州市| 秀山| 南汇区| 龙门县| 崇州市| 大庆市| 五华县| 荣昌县| 奈曼旗| 娱乐| 延边| 中阳县| 台中县| 卢龙县| 外汇|