我关心的是性能,是否有理由发送客户端XML而不是有效的HTML?像大多数事情一样,我确信它是依赖于应用程序的。我的具体情况是,从数据库中提取的网页中插入了大量内容。
两种方法的优点是什么?内容的大小是否值得关注?或者,在使用XML的情况下,JavaScript将XML处理为HTML的时间是否会平衡发送HTML开始时所需的额外时间?
谢谢,杰夫
答案 0 :(得分:5)
多年来,AJAX的首字母缩略词并未得到严格遵守。它现在只是“异步加载内容”的绰号。
现在大多数AJAX都是用JSON完成的。
您是否使用HTML作为JSON上的数据或其他任何内容(甚至是XML)都可以满足您应用程序的特定需求。在这方面,AHAH实际上只是AJAX的一个子集。
如果客户端解析/呈现数据没有任何好处,那么只需让服务器端执行并返回HTML。
答案 1 :(得分:3)
重要的是要认识到,即使在获取HTML时,也不应该直接将其直接放入DOM而不进行处理。如果它不通过安全协议传输,则可能受到MITM攻击。任何时候保存的解析XML都用于清理HTML以防止脚本注入。
XML也更便携。以XML格式提供的数据可以在任何页面上的任何位置使用。 HTML在这方面是不同的(尽管它可以用CSS设置样式),并非所有浏览器都有一个现成的解析器而没有将内容插入到DOM中。有些可能有DOMDocument()
,但您不能依赖它来进行跨浏览。使用XML,您还可以使用XPath轻松地定位和提取所需的数据。使用HTML(x-browser),您需要先插入DOM,或者使用真正不应该使用的永远不可靠的regexp方法。
JSON更轻量级,它消除了XML和HTML附带的大量内容。作为JavaScript对象的本机标记,它也很容易解析。与XML和HTML不同,您还可以使用带填充(JSONP)的JSON访问JSON数据跨域。
总之,您需要选择最适合您需求的方法。这些天大多数人都倾向于使用JSON,因为它的重量非常轻,可以跨域访问,只需要很少的精力来解析JavaScript。
答案 2 :(得分:1)
JSON(Javascript Object Notation)比XML更常用,因为它是轻量级的,并且是原生的Javascript。
话虽如此,如果您需要的是XML,那么您将撤回XML。
这是when to use HTML, XML or JSON
上的一个好页面这两者之间是good page on the differences。
JSON主要是出于性能原因而使用的。要使用该页面中的示例:
XML:
<?xml version=’1.0′ encoding=’UTF-8′?>
<card>
<fullname>Bala Arjunan</fullname>
<org>PH</org>
<emailaddrs>
<address type=’work’>abcd@xyz.com</address>
<address type=’home’ pref=’1′>me@mailme.com</address>
</emailaddrs>
<telephones>
<tel type=’work’ pref=’1′>+12345678</tel>
<tel type=’mobile’>+1234 1234</tel>
</telephones>
<addresses>
<address type=’work’ format=’B'>1234 Oil Mill St Chennai, IND</address>
<address type=’home’ format=’B'>5678 Oil Mill St Chennai, IND</address>
</addresses>
<urls>
<address type=’work’>http://balaarjunan.wordpress.com/</address>
<address type=’home’>http://balaarjunan.wordpress.com/</address>
</urls>
</card>
JSON:
{
“fullname”: “Bala Arjunan”,
“org”: “PH”,
“emailaddrs”: [
{"type": "work", "value": "abcd@xyz.com"},
{"type": "home", "pref": 1, "value": "me@mailme.com"}
],
“telephones”: [
{"type": "work", "pref": 1, "value": "+12345678"},
{"type": "mobile", "value": "+1234 1234"}
],
“addresses”: [
{"type": "work", "format": "us", "value": "1234 Oil Mill St Chennai, IND"},
{"type": "home", "format": "us", "5678 Oil Mill St Chennai, IND"}
],
“urls”: [
{"type": "work", "value": "http://balaarjunan.wordpress.com/"},
{"type": "home", "value": "http://balaarjunan.wordpress.com/"}
]
}
使用JSON,冗余要少得多。
OTOH,发送简单的HTML'HTML也很有效。你必须考虑你的数据。如果您只是更新一段文字,只需发送html即可。如果您正在处理项目,或者您要在Javascript中以某种方式操作或使用的项目集合,则需要JSON。如果要同步更新RSS源或其他XML,则需要XML。
请记住,HTML只是XML的一个子集。和xHTML遵循所有xml规则。知道javascript的浏览器(所有这些)都可以理解JSON(Javascript)和HTML(XML)。根据您使用数据的方式选择适合您项目的内容。