ajax返回发现处理格式不是json的标准格式
在项目测试的过程中,发现使用json_encode来直接echo出JSON格式数据,发现在jquery使用ajax获取是返回的格式居然解析不了,我就纳闷了,在其他的一些项目中,一样的处理方法,都是可以正常解析的,导致了不法显示的问题,但是直接打印的JSON格式就是正确的,没有什么格式语法错误。
原来是缺少声明JSON状态信息,加上以下代码,就可正常解析了。
header('Content-Type:application/json; charset=utf-8');
因为没有包含状态信息,所以有些代码jquery插件无法正常的解析JSON的格式。
下面为包含状态信息的方法
/** * Ajax方式返回数据到客户端 * @access protected * @param mixed $data 要返回的数据 * @param String $type AJAX返回数据格式 * @param int $json_option 传递给json_encode的option参数 * @return void */ protected function ajaxReturn($data,$type='JSON',$json_option=0) { switch (strtoupper($type)){ case 'JSON' : // 返回JSON数据格式到客户端 包含状态信息 header('Content-Type:application/json; charset=utf-8'); exit(json_encode($data,$json_option)); case 'XML' : // 返回xml格式数据 header('Content-Type:text/xml; charset=utf-8'); exit(xml_encode($data)); case 'EVAL' : // 返回可执行的js脚本 header('Content-Type:text/html; charset=utf-8'); exit($data); default : // 用于扩展其他返回格式数据 print_r($data); exit; } }
本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/370
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!