前台通过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);
    }
大家可以参考一下!
前台通过ajax获取后台数据,PHP如何返回中文数据的更多相关文章
- 用ajax获取后台数据,返回json数据,怎么在前台使用?
		用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ... 
- ajax请求为异步操作时,返回的数据不会被并列函数执行
		ajax请求为异步操作时,返回的数据不会被并列函数执行 
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
		在运用Entity Framework调用存储过程的时候,遇到"调用EF的存储过程报"调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题 ... 
- Struts1.x下使用jquery的Ajax获取后台数据
		jquery中有多种Ajax方法来获取后台数据,我使用的是$.get()方法,具体的理论我不解释太多,要解释也是从别的地方copy过来的.下面就介绍我的项目中的实现方法. 前台页面: ... 
- ajax获取后台传递的json数据
		最近在使用JQuery的ajax方法时,需要返回的数据为json数据,在success返回中数据处理会根据返回方式不同会采用不同的方式来生成json数据.在$.ajax方法中应该是如何来处理的,简 ... 
- bootstrap table通过ajax获取后台数据展示在table
		1. 背景 bootstrap table 默认向后台发送语法的dataType为 json,但是为了解决跨域问题我们需要将dataType改为jsonp,这时就需要修改bootstrap table ... 
- js页面用定时任务通过AJAX获取后台数据,但是从这个页面跳转到其他页面后,定时任务仍然在定时请求后台
		setInterval(function(){//ajax 请求后台数据},1000);这个是A页面的定时器然后我在A页面通过其他请求跳转到其他页面之后后台发现A页面的定时器的那个请求仍然在执行为什么 ... 
- 前端 ajax 获取后台json数据 解析
		先贴代码 function edit(node) { ).text(); alert(customerid) $.ajax({ type: "post", url: "/ ... 
- jquery ajax获取后台数据后无法输出
		今天做ajax获取数据,再浏览器的debugger窗口也看到了数据 ajax代码 $('#userSearch').click(function(){ $.get("loadAllUsers ... 
随机推荐
- WPF 动态更换模板
			Window x:Class="模板选择器.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml ... 
- yum及RPM安装
			yum及RPM安装 基本说明: 1.yum相当于windows上面的360软件中心 2.yum是redhat系列发行版的软件安装命令 debian系统用的是apt-get 3.yum安装软件的来源得存 ... 
- linux系统安全及应用——PAM安全认证
			一.PAM认证模块介绍 PAM认证模块,叫做可插拔式的认证模块.一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换.PAM提供了对所有服务进行 ... 
- SDUT OJ 数据结构实验之排序一:一趟快排
			数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ... 
- Spring boot redis自增编号控制 踩坑
			近段期间,公司 接手一个订单号生成服务,规则的话已经由项目经理他们规定好了,主要是后面的四位数代表的关于当前订单号已经执行第几个了.而这里面有一个要求就是支持分布式.为了实现这个东西,刚开始我使用了r ... 
- 怎样将结构完全一样的两个表的内容合并到一个表中,SQL语句
			标签: SQL合并数据 2013-08-21 10:41 489人阅读 评论(0) 收藏 举报 分类: Oracle数据库(14) select * into 新表名 from (select ... 
- Oracle Secure Backup设置Infiniband网络优先
			默认情况下,Oracle Secure Backup备份软件走管理网进行数据备份,如果需要Infiniband网络进行备份,则必须设置Preferred Network Interfaces功能. 下 ... 
- Qt 学习之路 2(32):贪吃蛇游戏(2)
			Qt 学习之路 2(32):贪吃蛇游戏(2) 豆子 2012年12月27日 Qt 学习之路 2 55条评论 下面我们继续上一章的内容.在上一章中,我们已经完成了地图的设计,当然是相当简单的.在我们的游 ... 
- 创建一个流(Stream)可以让Bitmap或Image保存到流里面
			创建一个流(Stream)可以让Bitmap或Image保存到流里面 http://blog.csdn.net/angxiao/article/details/7481465 写文件流 ... 
- POJ_3696 The Luckiest number 【欧拉定理+同余式+对取模的理解】
			一.题目 Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his ... 
