Ajax和WEB服务数据格式:自定义返回格式
浏览:2222次 出处信息
这是这一系列的最后一篇文章了,前面我们讲到了XML,SOAP,HTM格式和第二部分的JSON和JSONP。现在我们来看看自定义数据格式。
最佳的数据传输格式应该是使用最少的传输量表达最需要的数据。想想之前在XML和JSON中定义的书的数据。我们每一本书包含6条数据,所以我们可以简单的按照下面的格式来写:
The Principles of Beautiful Web Design, 2nd Edition;http://www.sitepoint.com/books/design2/;Jason Beaird;SitePoint;39.95;USD jQuery: Novice to Ninja;http://www.sitepoint.com/books/jquery1/;JEarle Castledine & Craig Sharkie;SitePoint;29.95;USD Build Your Own Database Driven Website;http://www.sitepoint.com/books/phpmysql4/;Kevin Yank;SitePoint;39.95;USD
我们的数据现在看起来跟分号分隔的列表差不多了。我们使用回车来区分每一本书,通过分号来区分书中的每一项内容,这个分隔符必须谨慎的选择,不选择逗号因为可能书名中出现逗号。
跟JSON不同,对于自定义的数据格式,我们必须得自己来解析返回的字符串,不过这个通过JavaScript自带的split()方法可以轻松完成。下面的代码就是将我们自定义的数据格式转换成为JSON的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// convert custom data to an array of JavaScript objects
function ParseBookData(ajaxdata) {
var book = [], bookData = ajaxdata.split("\\n"), bookItem;
for (var b=0, bl=bookData.length; b < bl; b++) {
bookItem = bookData[b].split(";");
book[b] = {
title: bookItem[0],
url: bookItem[1],
author: bookItem[2],
publisher: bookItem[3],
price: {
amount: parseFloat(bookItem[4]),
currency: bookItem[5]
}
};
}
return book;
}
var book = ParseBookData(xhr.responseText);
alert(book[0].title); // first book title
alert(book[1].url); // second book URL |
JavaScript可以很快的处理这些数据-即使是一千本书的数据。大多数情况下,你会发现下载和处理数据的时间远小于同样的基于JSON的异步请求的时间。
自定义的数据格式有下面这些好处:
当然也有他的不好处:
看看前面的文章:
希望这一系列的文章对于大家认识Ajax的数据格式有一些帮助。
建议继续学习:
- Ajax和WEB服务数据格式:JSON JSONP (阅读:4122)
- Ajax和WEB服务数据格式:XML SOAP HTML (阅读:3699)
- 前端开发常见图片格式详解 (阅读:3511)
- 图片格式与设计那点事儿 (阅读:3268)
- JSON 轻量级的数据交换格式 (阅读:3013)
- [关注细节的最佳方案]有效期时间格式的展现 (阅读:2264)
- 视频的容器与格式 (阅读:1870)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Ajax和WEB服务数据格式:JSON JSONP
后一篇:我的PHP,Python和Ruby之路 >>
文章信息
- 作者:RockUX 来源: RockUX | WEB、前端、JavaScript、PHP
- 标签: 格式
- 发布时间:2011-06-02 23:36:09
建议继续学习
近3天十大热文
-
[914] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[52] Innodb分表太多或者表分区太多,会导致内 -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] 分享一个JQUERY颜色选择插件
