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 许可协议。转载请注明出处!