控制器输出json数据
打印简单的json数据
在headers头文件中内容类型还是html格式文件
public function zy(){
$arr=Db::table('app_users')
->field('id,username,sex,email')
->find();
echo json_encode($arr);
}
运行结果
{"id":13,"username":"admins","sex":1,"email":"fengerda@163.com"}
//将数组转成json格式数据
json_encode($arr);
只是将显示得结果转为json数据,但格式还是原先得html格式
查看html源代码可以看出来不光有结果还有tp的一些东西
要想只显示json数据内容 在echo后面写exit();
return代替echo会获取空值,因为会两次json编译
在ajax中使用服务器返回数据类型为json
$.ajax({
type:'post',
....
success:function(data){},
dataType:'json'//回调数据的格式html,text,json,xml
});
返回得结果和内容属性都是json格式
输出方式
【强制设置输出类型】
根据请求类型直接判断进行输出
\think\Config::set('default_return_type','json');
return $arr;
【原生方式】
通过原生方式返回数据不会设置头信息
echo json_encode($arr);
exit();
json_encode(数据,额外参数)
第2参数:额外参数可以设置成定义的常量
例如不写第二参数那么最后显示的带有中文的字符会自动转为'\u8d85'这种形式
加入JSON_UNESCAPED_UNICODE
后即可显示原样中文字符
JSON_HEX_QUOT,
JSON_HEX_TAG,
JSON_HEX_AMP,
JSON_HEX_APOS,
JSON_NUMERIC_CHECK,
JSON_PRETTY_PRINT,
JSON_UNESCAPED_SLASHES,
JSON_FORCE_OBJECT,
JSON_PRESERVE_ZERO_FRACTION,
JSON_UNESCAPED_UNICODE,
JSON_PARTIAL_OUTPUT_ON_ERROR。
具体含义参考:预定义常量
【自动输出】
根据请求类型来觉得用什么格式的数据输出,输出的同时会自动设置头信息
return $arr
通过配置项来修改设置
\think\Config::set('default_return_type',json);
'default_return_type'=>'html',
'default_ajax_return'=>'json',
'default_jsonp_handler'=>'jsonpReturn'
【手动输出】
根据我们的需求进行输出,输出是会自动匹配头信息的格式
//类的静态调用
return Respanse::create($data,'json',$code,$header,输出参数);
//助手函数
return json(c1,c2,c3,c4);
参数1:数组数据,参数2:状态码,参数3:头信息参数,参数4:额外参数
关于设置头信息请参考ThinkPHP5控制器从入门到精通-第八章响应输出-设置信息头
评论