为什么需要在php和AJAX中使用JSON

时间:2011-02-03 01:33:48

标签: php jquery ajax json

我上周刚刚开始做jQuery,到目前为止我已经使用ajax创建了一些基本系统,比如基本的jQuery CRUD和简单的聊天系统而没有参考其他人的工作,我决定测试自己我可以独自完成系统的程度在jQuery中(还没有JSON和XML)。

但是当我决定查看其他人的工作时(希望能够获得/学习良好实践和代码)很多或几乎每个处理ajax的程序都有一些JSON。所以我决定学习并阅读JSON specially this one,但我想因为这是我第一次处理它,我有一个问题沉入我的大脑。是的,我知道它是一种“轻量级描述分层数据的方式”,我也知道如何使JSON像在JS中混合文字数组和对象,以及如何在js中显示它。

但我的问题是,有什么区别,有什么好处而不是不使用它? 当我仍然可以使用没有JSON的ajax和数据库在服务器上获取和存储数据。 顺便说一句,我还没有专注于XML,因为根据我的研究,最好在AJAX中使用JSON。

你能给我一些处理

的实际场景吗?

S1。 ajax php mysql(这有哪些缺点?

S2。 ajax php mysql json(这有什么优势?

我的意思是,我的重点是发送和获取数据,我已经可以使用s1。

很抱歉,如果你发现我的问题很愚蠢。蒂亚。 :)

2 个答案:

答案 0 :(得分:23)

为什么要使用JSON?答案是可移植性结构

JSON 可移植,因为解析器和编写器可用于多种语言。这意味着JavaScript脚本可以非常容易地理解PHP脚本生成的JSON。它是传输复杂结构(如数组和对象)的最佳方式,并且仍然可以与多种语言兼容。

JSON提供结构,因为您使用它传输的数据可以具有一致的格式。这不是传回纯文本(即未格式化的)数据,如逗号分隔或分隔数据。

仅仅分隔的数据(例如,“BookName1,BookName2,BookName3”)对于人类来说更难以理解,调试和使用。如果您想在服务器和浏览器之间调试响应并且数据已分隔(如上面的示例),您可能很难理解它。此外,如果要添加不同的数据类型,提供单独的记录等,那么您的自定义数据格式会变得更加复杂。最终,您最终可能会重新发明JSON。

作为旁注,JSON确实比XML更好。它在空间方面更有效。没有标记名称占用空间。结构是通过嵌套大括号创建的,而不是详细标记。

<强>资源

这是一篇关于XML和JSON的差异和优缺点的有趣文章:http://www.json.org/xml.html

<强>实施例

根据您的请求,以下是使用PHP编码JSON的示例。这是从docs

中删除的
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

输出:

{"a":1,"b":2,"c":3,"d":4,"e":5}

将此与此类对比,不使用JSON:

a,1
b,2
c,3
d,4
e,5

要解析它,你必须遍历每一行,自己拆分值,然后创建数组。这并不困难,但想象一下你有一个嵌套对象:

$arr = array ('a'=> array(1,2,3),'b'=> array('a' => 1, 'b' => 2),'c'=>3,'d'=> array(1,2,3,4,5) ,'e'=>5); // etc.

使用JSON,对它进行编码没有什么不同。只需使用json_encode即可。但是,手动编码,然后手动解码将会更加有效。

答案 1 :(得分:5)

使用任何编程语言编程,您可以使用几种不同的类型数据,包括非常有用的array类型。
在Javascript和任何服务器端语言之间交换数据只能通过字符串进行。即您可以发送和返回任何文本,但无法发送本机数组或数字类型。

JSON是一种使用字符串表达数组和其他类型的优雅方式。这样,您可以在不同环境之间来回传递任意数据,并且不限于纯文本。 XML解决了同样的问题,但对于简单的AJAX请求来说往往有点过分。