`
riali
  • 浏览: 42415 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

<?xmlversion="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>
<METANAME="Author"CONTENT="emu">
</HEAD>
<BODY>
<xmlsrc="error.xml"id="err"></xml>
<SCRIPTLANGUAGE="JavaScript"src="error.xml"charset="utf-8"></SCRIPT>
<SCRIPTLANGUAGE="JavaScript">
alert(err.getElementsByTagName(
"error")[0].xml)
</SCRIPT>
</BODY>
</HTML>
分享到:
评论

相关推荐

    开发基于XML的留言板

    DOM将整个XML文档加载到内存中,形成一个树形结构,便于访问任意节点;而SAX则是事件驱动的,逐行处理XML,适合处理大型文件。 为了使留言板具有交互性,我们可以采用JavaScript或服务器端语言(如PHP、Python、...

    网上快餐系统(试试整合)

    【网上快餐系统(试试整合)】是一个模拟现实的网上快餐店管理系统,旨在为学习和实践IT技术,特别是Java Web开发的学生或开发者提供一个项目案例。这个系统并未在现实中投入使用,而是作为一个教学工具,帮助用户...

    小游戏源码-腊八节的抓迷藏,试试吧!.rar

    【标题】与【描述】都指向了一个以"腊八节的抓迷藏"为主题的小游戏源码,这表明我们正在处理一个与编程、游戏开发相关的压缩包文件。这个小游戏可能是为了庆祝中国传统节日腊八节而设计的,它可能包含了一些与腊八节...

    鼠标移动到DIV上改变其背景色JS和CSS两种方法

    本主题将探讨如何使用JavaScript和CSS来实现当鼠标移动到一个`&lt;div&gt;`元素上时改变其背景色的效果。 首先,我们来讨论CSS的方法。CSS(Cascading Style Sheets)是用于描述HTML或XML(包括如SVG、MathML等各种XML...

    基于jquery的强大ajax选项卡特效插

    1. 引入jQuery库和插件的JavaScript文件。 2. 在HTML中设置选项卡结构,包括标题和内容区域。 3. 初始化插件,设置必要的配置参数,如Ajax请求的URL、默认选中的选项卡等。 4. 使用CSS调整样式,以匹配网站的视觉...

    AjaxControlToolkitSampleSite控件

    1. CombineScriptsHandler.ashx - 这是一个处理程序,可能用于合并和压缩JavaScript文件,以减少HTTP请求并提高页面加载速度。 2. Default.aspx - 这是默认的ASP.NET网页,展示了控件的使用示例。 3. Web.config - ...

    Android webview 上传图片

    在Android开发中,WebView是一个非常重要的组件,它允许我们在原生应用中内嵌网页内容,实现混合式开发。本文将详细讲解如何在Android的WebView中实现图片上传功能,并与HTML5 JavaScript进行交互。 1. **WebView...

    IIS6-SET-GZIP.rar

    3. "服务器软件.url" - 类似地,这个文件可能链接到一个服务器软件的集合页面,可能包含了IIS6或其他服务器软件的下载链接或相关教程。 4. "jb51.net" - 这可能是一个重复的文件名,也可能是指向jb51.net的另一个...

    EditPlus工具

    - **文本编辑**:EditPlus提供了一个简洁的用户界面,可以打开和编辑各类文本文件,包括纯文本、HTML、XML、CSS、JavaScript等。 - **编码支持**:支持多种字符编码,如ASCII、Unicode、UTF-8等,确保在不同系统和...

    265网站的天气预报调用代码.rar

    2. 构建请求URL:根据API文档,开发者需要构造一个包含API地址、参数和密钥的URL。例如,可能需要指定城市名、日期等信息。 3. 发送HTTP请求:使用编程语言中的HTTP客户端库(如JavaScript的fetch或XMLHttpRequest,...

    magento模板

    Magento是一款开源的电子商务平台,以其强大的功能和高度的可定制性而受到许多在线商家的青睐。模板在Magento中扮演着至关重要的角色,它们决定了商店的外观和用户体验。"mEbay_v1.6.0"可能是一个专为Magento设计的...

    fusioncharts的SWF文件,无试用标记

    描述中提到,FusionCharts是一个"很好的FLASH图表工具",这表明该工具在设计和功能上具有高质量和实用性。"赶快下载试试吧"鼓励用户下载并亲自测试其性能,同时提醒用户在使用后留下评论,这有助于其他潜在用户了解...

    网站在线客服系统(Jsp+MySql)

    【标题】"网站在线客服系统(Jsp+MySql)"是一个基于Java Web技术构建的开源客服解决方案,它结合了JSP(JavaServer Pages)和MySQL数据库,用于实现网站上的实时交流功能。这个系统允许访客与客服人员进行实时对话,...

    dangdang和smartstruts2.rar

    8、写一个struts.xml 包含use.xml 1)跳转到 /user/register_form.jsp &lt;result name="form"&gt;/user/register_form.jsp 完善action。 &lt;param name="inputName"&gt;image ...

    HiJson 64位和32位.zip

    1. JSON查看:HiJson提供了一个清晰的界面,可以直观地查看JSON对象和数组,使得理解和调试JSON数据变得轻松。 2. 格式化:对于杂乱无章的原始JSON字符串,HiJson能将其自动格式化,使代码更加整洁易读,提高阅读...

    nativescript-with-redux:试试看

    相册本机应用程序是一个示例本机移动应用程序,展示了的用法以及Telerik Platform服务到该应用程序的集成。 要下载源代码,只需单击“下载ZIP”按钮。 展示的功能和SDK 以下是“相册本机”示例应用程序中展示的...

    struts2 api

    2. **Result类型**:Struts2支持多种Result类型,如dispatcher(用于转发到一个JSP页面)、stream(用于处理文件下载)和freemarker(用于FreeMarker模板引擎)。开发者可以根据需求选择合适的Result类型。 3. **...

    指向时显示背景色 网页技巧

    例如,在一个列表中,当鼠标悬停在一个项目上时,不仅该项目会改变背景色,其子项目也会跟随变化。 - **动态内容**:结合JavaScript,可以根据用户的操作动态地修改背景色或其他样式,例如响应式设计中的适应屏幕...

Global site tag (gtag.js) - Google Analytics