控制器输出

是滑稽啊
2020-03-23 / 0 评论 / 161 阅读 / 正在检测是否收录...

控制器输出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控制器从入门到精通-第八章响应输出-设置信息头
0

评论

博主关闭了所有页面的评论