这有什么好处那?很显然前端在接到返回的数据时可以直接使用,而不用再用eval('(+ returnString +)')
或者 $.parseJSON(returnString )
(jQuery的函数)来转化为js对象,这样显然为用户省电了。。。
在网上搜索了一下,这个问题在搜索中文信息的时候比较少,一些说是返回json的都是在前端进行的转化处理,根本不是返回JSON格式,其实返回json相当的简单。
下例来自《锋利的jQuery》:
$(function(){ $('#send').click(function() { $.getJSON('http://blog.meituo.net/wp-content/uploads/php_return_json/test.js', function(data) { $('#resText').empty(); var html = ''; $.each( data , function(commentIndex, comment) { html += '<div class="comment"><h6>' + comment['username'] +':</h6><p class="para">' + comment['content'] + '</p></div>'; }) $('#resText').html(html); }) }) })
你需要做的就是将数据存储为格式正确的 .json或者.js 文件。以下为示例所传送的json格式的数据
[ { "username": "张三", "content": "沙发." }, { "username": "李四", "content": "板凳." }, { "username": "王五", "content": "地板." } ]
php输出JSON格式
那么php如何输出json格式?php 使用json_encode函数,然后jQuery使用datatype:json 就可以了嘛? 它的输出如下:
显然并非所愿。还是字符串,到底怎么实现?其实很简单,只要在php文件头部加入以下代码:
header('Content-type: text/json');
这个头就是告知此文件输出类型为 json,这种形式我们见的最多的是验证码——php输出验证图片,有时php可以输出css文件,js文件等做一些有趣的事情。好的,我们测试一下吧。
示例代码:
< ?php header('Content-type: text/json'); $fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"), "numbers" => array(1, 2, 3, 4, 5, 6), "holes" => array("first", 5 => "second", "third") ); echo json_encode($fruits); ?>