json 数据格式数据用得最多的是与js,flash实时交互用的,那么php怎么返回json数据格式呢,下面我来分析一下实例.
php实例代码如下:
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);?>
上面是英文是没有问题,如果是中文就会有问题,解决办法如下.
json 只支持 utf-8 编码,我认为是前端的 javascript 也是 utf-8 的原因,代码如下:
iconv('gb2312', 'utf-8', '这里是中文标题') , 'body' => 'abcd...');echo json_encode($array);?>
//结果如下:
{title:u8fd9u91ccu662fu4e2du6587u6807u9898,body:abcd...}
利用js来分析这个函数,代码如下:
$(function(){ $('#send').click(function() { $.getjson('json.php', function(data) { $('#restext').emptyempty(); var html = ''; $.each( data , function(commentindex, comment) { html += '' + comment['username'] + ':' + comment['content'] + '
'; }) $('#restext').html(html); }) }) })
注意在你的php输出js格式时我们必须是header('content-type: text/json');这样的头部信息发送,后面加一个完整的可解析中文乱码的问题程序,代码如下:
1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayrecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--;}/************************************************************** * * 将数组转换为json字符串(兼容中文) * @param array $array 要转换的数组 * @return string 转换得到的json字符串 * @access public * *************************************************************/function json($array) { arrayrecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json);}$array = array( 'name' => '希亚', 'age' => 20);echo json($array);?>
本文地址:
转载随意,但请附上文章地址:-)