head rush ajax chapter7 xml & JSON

当我们从服务器一次返回多个数据时,各个数据的格式也许每个人写出的都不一样,导致正确分析的复杂性。如12;45;56或者12|45|56。此时可以使用XML,利用元素和属性,以结构化的方式组织你的数据。
服务器返回的消息头应该指定消息类型header("Content-Type:text/xml");
接收端使用reponseXML来获取数据,他返回一个DOM document对象,而不是reponseText,他返回XML文档的文本版本.当浏览器收到服务器的XML响应,他会创建一个DOM树以代表此XML文档。
请求所用的数据格式和服务器响应的数据格式并没有关联,二者可以不同。如果送出XML请求,由于数据量较大,所以要有POST请求,并设定request.setRequestHeader("Content-Type","text/xml");并使用send()方法把xml以文本形式送出。因此送出XML的意义不大,需要特殊的工具把DOM树转成XML文档,而且数据量会大(有很多标签)同时服务器还要能够处理XML格式,所以还不如送出名/值对方便,这样的代码最少,服务器可以很容易取得请求的参数信息。
JSON(Javascript Object Notation)  他就是JavaScript,他比XML更像数组或列表。
大括号{}包含无次序的值的集合,[]表示数组,和XML一样,你可以手动用文本的方式写出JSON,但这样容易出错。
{"books":[
{"title":"harry potter","author":"JK Rollin"},
{"title":"Black House","author":"Stephen King"},
]};
// Get the updated totals from the JSON response
var jsonData = eval('(' + request.responseText + ')');//将文本转化为JavaScript对象
var totalBoards = jsonData.totals[0].boardsSold
JavaScript代码可以直接使用JSON但是服务器端的程序在没有任何帮助的情况下,可能不知道如何处理JSON数据格式,需要相应的库。//www.json.org上可以找到需要的库。服务器把JSON数据当做文本传出来,因此用responseText获取数据,如果考虑安全问题就需要使用JSON.parse()这个解析器,而不是eval()
在请求和响应中可以使用文本、XML、JSON,但实际中应尽量使用文本格式的数据,这样容易处理。

posted @ 2010-04-16 19:19  莫忆往西  阅读(146)  评论(0编辑  收藏  举报