使用XML进行Ajax响应与普通HTML

时间:2011-08-10 19:18:09

标签: xml ajax

任何人都可以给我一个很好的理由,为什么我想将XML用作ajax请求的响应,而不是组织目的和易读性?我试图尽可能安全,我不确定使用XML是更安全还是更好的做法?大多数消息来源都提供使用XML的理由,而这些理由并不关心我的安全问题。

3 个答案:

答案 0 :(得分:2)

我认为这取决于你回归的地方。通常,如果返回到javascript(我在这里假设)是有利于重新使用JSON格式。 JSON简单轻巧。 .NET和jQuery中的方法都可以解析和serilize / deccerlize。

jQuery.parseJSON( "json" ) 

这会将JSON字符串解析为JQuery对象

JSON.stringify(your_object) 

这会将一个对象解析成一个jquery字符串,你可以发送到ajax调用

using System.Web.Script.Serialization;
IList<NewFee> ExistingNewFees = new JavaScriptSerializer().Deserialize<IList<NewFee>>(ExistingNewFeesJSON);

此片段说明了将json字符串deserlizing为预定义类的通用列表类型。

答案 1 :(得分:1)

假设您确实在比较XML和JSON,那么除了您已经从Mads和JBone获得的好建议之外:

在大多数情况下,当您处理整齐映射到典型编程语言变量和结构的各种数据项时,JSON往往更方便。如果出于某种原因,XML会传达标记文本,或者我们可以非正式地称之为“文档”,那么XML具有更强大的功能。我经常使用的一个例子是保险公司:

  • 如果您要返回保单持有人名单,他们的地址以及保险金额,那么XML或JSON都可以使用,而JSON可能更方便(并且可能有更少的相同来源问题)。

  • 如果您尝试返回实际保险单的文本,部分标题标记为标记,那么XML就是所谓的混合内容功能(能够在一系列文本中间使用标记&lt; tag&gt;这个&lt; / tag&gt;)比JSON更合适。

  • 如果您想将数据列表与文档模板(例如保险单的模板,保险人姓名的占位符和保险金额)结合起来,那么请使用XML来处理数据和您的模板可以使用XSLT或XQuery等语言来组合它们

所有这一切都表明,对于人们今天使用Web应用程序至少95%的人来说,JSON是一个合理的选择。

答案 2 :(得分:0)

如果您以XML格式提供回复,则有助于限制谁可以从浏览器请求数据,因为same origin policy restrictions

如果是XML响应,则您的AJAX调用必须是真正的Asyncronous JavaScript和XML,仅限于从托管网页的同一域请求信息,而不是获取可以从中请求数据的JavaScript的动态脚本元素任何地方。

提供JSON接口为人们打开了大门,让人们可以使用JavaScript生成动态<script>标记,并从任何地方获取您公开的JSON数据,无论代码“存在”的位置如何。

如果某人有活动会话并且已通过您的webapp验证,则恶意代理可以使用他们的网页(或将恶意JavaScript注入可能包含在网页中的任何其他人的库中)从您的服务中获取数据,解析浏览器中的信息,然后发送到自己的服务。

如果您将数据公开为XML,他们需要您的XMLHttpRequest对象从浏览器与您的界面进行通信(不启用安全例外),并且只能与网页所在的站点进行交互。 / p>