zoukankan      html  css  js  c++  java
  • 前台通过ajax获取后台数据,PHP如何返回中文数据

      现在经常使用Ajax调用后台php获取后台数据,但是PHP返回的数据如果含有中文的话,Ajax会无法识别,那咋整呢,我用的是比较笨的方法,但是实用:  

      方法一:

    echo urldecode(json_encode(array('status'=>'1', 'errMsg'=>urlencode('数据传递错误,请重试'))));
    return;

      上面是之前遇到时候的解决办法,但是我又遇到了一次,用上面的办法不管用,用网上各种办法也是不行,最后琢磨出第二种方法(这种方法可能只适用于这一种情况,但其他方法调不出来可以试一下这一种),

      方法二:

    //show_as_table是拼接HTML代码的方法
    $tableHtml = $this->show_as_table($data);
    $tableHtml = iconv('GBK', 'UTF-8', $tableHtml);
    echo json_encode(array("success"=>true, "data"=>$tableHtml));die;

       方法三:用下面的两种方式进行url转码

        方式一:

    public function ch_json_encode($data) {
            function ch_urlencode($data) {
                if (is_array($data) || is_object($data)) {
                    foreach ($data as $k => $v) {
                        if (is_scalar($v)) {
                            if (is_array($data)) {
                                $data[$k] = urlencode($v);
                            } else if (is_object($data)) {
                                $data->$k = urlencode($v);
                            }
                        } else if (is_array($data)) {
                            $data[$k] = ch_urlencode($v); //递归调用该函数
                        } else if (is_object($data)) {
                            $data->$k = ch_urlencode($v);
                        }
                    }
                }
                return $data;
            }
    
            $ret = ch_urlencode($data);
            $ret = json_encode($ret);
            return urldecode($ret);
        }

        方式二:其实是方式一的不同写法

      public function arrayRecursive(&$array, $function='urlencode', $apply_to_keys_also = false){
            foreach ($array as $key => $value) {
                if (is_array($value)) {
                    $this->arrayRecursive($array[$key], $function, $apply_to_keys_also);
                }else{
                    $array[$key] = $function($value);
                }
                if ($apply_to_keys_also && is_string($key)) {
                    $new_key = $function($key);
                    if ($new_key != $key){
                        $array[$new_key] = $array[$key];
                        unset($array[$key]);
                    }
                }
            }
        }
        public function JSON($array){
            $this->arrayRecursive($array, 'urlencode', true);
            $json = json_encode($array);
            return urldecode($json);
        }

       大家可以参考一下!

  • 相关阅读:
    北邮OJ103.反转单词 c++/java
    北邮oj 104. 912星球的研究生
    北邮oj 97. 二叉排序树
    北邮OJ 89. 统计时间间隔 java版
    用欧几里得定理求最大公约数和最小公倍数
    shell执行${var:m:n}报错Bad substitution解决办法
    基于ffmpeg不同编码方式转码后的psnr对比
    ffmpeg使用ss与t参数对视频进行剪辑
    黑菜菌的JAVA学习笔记
    Linux服务器内存监控—每小时检查&超出发送邮件&重启占用最高的Java程式
  • 原文地址:https://www.cnblogs.com/wxdblog/p/6873501.html
Copyright © 2011-2022 走看看