ajax返回发现处理格式不是json的标准格式

作者:Liaodeity - 2016年03月22日

        在项目测试的过程中,发现使用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 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!