[color=blue]XML(eXtensible Markup Language)[/color]是一种可拓展标记语言,是W3C发布的标准。
当使用Ajax发送请求时,需要返回几个数据时,很明显文本数据已经合适了,即时是添加了特殊的分隔符,但分隔符可能导致二义性,这时候该是XML出场的时候了,可以为响应设置头信息Content-Type的值为:text/xml,浏览器取得XML响应后,会创建一个DOM树代替XML文档,能通过DOM树对XML文档进行操作,很多属性以及方法都通用。
可以通过代表XML文档的DOM树提供的各种方法取得XML文档相应里面对应的键值对,即可以获取多个数据。
既然能通过响应返回代表XML的DOM树,当然也能通过请求发送代表XML的DOM树。但是发送XML没有实际意义,XML本身书写就比较繁琐,且跟文本请求比起来,包含同样的信息时,XML发送的数据量明显比问问请求大得多,而且发送XML文档需要用到特殊的工具集来把DOM树转成XML文档。
所以,发送请求时,采用文本键值对比较好;返回响应时,如果只有当个返回数据,就采用文本返回,如果有多个返回数据时,就采用XML文档返回。
[color=blue]JSON(JavaScript Object Notation)[/color]是一种轻量级的数据交换语言,其实就一个javascript。
JSON数据可以说是一个无序集合与数组的混合产物,且JSON数据一定以无序集合在最外层开始。大括号({})表示无序集合,中括号([])表示数组,需加上索引才可访问里面的数据,键值对(key:value),集合通过键(key)即可取得下一层的数据对象,数组要通过键(key)加上索引值([index])才能取到下一层的数据对象。
JSON数据其实也就是一个文本,如果个人很熟悉JSON数据格式的时候,可以直接在响应结果中直接返回JSON数据格式的文本。不过JSON的官网上提供了很多主流语言的JSON程序库,使用JSON程序库,可以让程序员使用自己熟悉的语言的数据结构,再通过JSON程序库转化成JSON数据格式。
在浏览器端,可通过eval('(' + request.responseText + ')')函数将JSON数据格式转化成一个JSON数据对象。eval()函数的作用是将一个字符串变成一个对象,在响应文本的两端添加'('和')'是为了让eval()函数自动识别,将返回文本直接转换成JSON对象,以方便取得数据。如果服务器端的响应被修改了,则可能会导致浏览器的javascript运行恶意程序代码,故我们需要使用[color=blue]JSON解析器[/color],可以通过JSON的官网下载取得,引入head后,可直接使用JSON.parse(request.responseText)解析得JSON对象,具有很高的安全性。
至于如何在XML和JSON之间做出抉择,他们的[color=blue]共同点[/color]是都能返回多个数据,这个可以根据具体开发人员的喜好来选择,一个是重量级数据交互语言,一个是轻量级数据交互语言。
[color=blue]XML的优点[/color]:可以轻易表达出复杂的信息。
[color=blue]XML的缺点[/color]:包含同样信息时数据量相对庞大,且JS程序员操作起来麻烦。
[color=blue]JSON的优点[/color]:包含同样信息时数据量相对小,且JS本身就是javascript对象,JS程序员操作起来很方便。
[color=darkblue]JSON的缺点[/color]:包含的信息数据格式看起来想表格或者数组,直接返回会比较麻烦。如果使用JSON的程序库,又得让服务器程序员学习JSON程序的使用方法。
当使用Ajax发送请求时,需要返回几个数据时,很明显文本数据已经合适了,即时是添加了特殊的分隔符,但分隔符可能导致二义性,这时候该是XML出场的时候了,可以为响应设置头信息Content-Type的值为:text/xml,浏览器取得XML响应后,会创建一个DOM树代替XML文档,能通过DOM树对XML文档进行操作,很多属性以及方法都通用。
可以通过代表XML文档的DOM树提供的各种方法取得XML文档相应里面对应的键值对,即可以获取多个数据。
既然能通过响应返回代表XML的DOM树,当然也能通过请求发送代表XML的DOM树。但是发送XML没有实际意义,XML本身书写就比较繁琐,且跟文本请求比起来,包含同样的信息时,XML发送的数据量明显比问问请求大得多,而且发送XML文档需要用到特殊的工具集来把DOM树转成XML文档。
所以,发送请求时,采用文本键值对比较好;返回响应时,如果只有当个返回数据,就采用文本返回,如果有多个返回数据时,就采用XML文档返回。
[color=blue]JSON(JavaScript Object Notation)[/color]是一种轻量级的数据交换语言,其实就一个javascript。
JSON数据可以说是一个无序集合与数组的混合产物,且JSON数据一定以无序集合在最外层开始。大括号({})表示无序集合,中括号([])表示数组,需加上索引才可访问里面的数据,键值对(key:value),集合通过键(key)即可取得下一层的数据对象,数组要通过键(key)加上索引值([index])才能取到下一层的数据对象。
JSON数据其实也就是一个文本,如果个人很熟悉JSON数据格式的时候,可以直接在响应结果中直接返回JSON数据格式的文本。不过JSON的官网上提供了很多主流语言的JSON程序库,使用JSON程序库,可以让程序员使用自己熟悉的语言的数据结构,再通过JSON程序库转化成JSON数据格式。
在浏览器端,可通过eval('(' + request.responseText + ')')函数将JSON数据格式转化成一个JSON数据对象。eval()函数的作用是将一个字符串变成一个对象,在响应文本的两端添加'('和')'是为了让eval()函数自动识别,将返回文本直接转换成JSON对象,以方便取得数据。如果服务器端的响应被修改了,则可能会导致浏览器的javascript运行恶意程序代码,故我们需要使用[color=blue]JSON解析器[/color],可以通过JSON的官网下载取得,引入head后,可直接使用JSON.parse(request.responseText)解析得JSON对象,具有很高的安全性。
至于如何在XML和JSON之间做出抉择,他们的[color=blue]共同点[/color]是都能返回多个数据,这个可以根据具体开发人员的喜好来选择,一个是重量级数据交互语言,一个是轻量级数据交互语言。
[color=blue]XML的优点[/color]:可以轻易表达出复杂的信息。
[color=blue]XML的缺点[/color]:包含同样信息时数据量相对庞大,且JS程序员操作起来麻烦。
[color=blue]JSON的优点[/color]:包含同样信息时数据量相对小,且JS本身就是javascript对象,JS程序员操作起来很方便。
[color=darkblue]JSON的缺点[/color]:包含的信息数据格式看起来想表格或者数组,直接返回会比较麻烦。如果使用JSON的程序库,又得让服务器程序员学习JSON程序的使用方法。