V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Raul7
V2EX  ›  PHP

新手求助:使用 ThinkPhp 遇到如下问题。

  •  
  •   Raul7 · 2016-08-07 23:06:29 +08:00 · 2926 次点击
    这是一个创建于 2818 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 ajaxReturn 方法将提示信息返回到前台打印到页面。但是提示信息全部被 Unicode 编码。怎么解决??
    13 条回复    2016-08-08 16:47:57 +08:00
    kkk330
        1
    kkk330  
       2016-08-08 00:15:22 +08:00 via Android
    首先应该是 utf8 编码的文字,不是 Unicode ,然后复制那段 utf8 到 console ,粘贴,回车,记得用引号包起来; 另外好像 network 里面的 response 可以直接看,记不清了
    cevincheung
        2
    cevincheung  
       2016-08-08 06:39:49 +08:00
    js 直接反解 JSON 输出的是汉字。莫纠结。
    likezun
        3
    likezun  
       2016-08-08 08:39:52 +08:00
    珍爱生命,远离 Thinkphp
    yao978318542
        4
    yao978318542  
       2016-08-08 09:23:38 +08:00
    你是输出到浏览器的控制台还是直接页面打印的啊 贴代码啊!
    Raul7
        5
    Raul7  
    OP
       2016-08-08 09:27:50 +08:00
    @yao978318542 @cevincheung @kkk330 打印提示信息到页面的代码如下:
    if (false) {

    $this->ajaxReturn ( array ('nr' => '验证码错误!','sf' => 0 ) );
    } else {
    $addaccount = M ( 'user' )->where ( array (UE_account => $data_P ['dfzh']) )->find ();

    if (!$addaccount) {
    $this->ajaxReturn ( array ('nr' => '推荐人不存在!','sf' => 0 ) );
    }else {
    $this->ajaxReturn ('推荐人可用!');
    //$this->ajaxReturn ($addaccount['ue_theme']);
    }
    }
    总感觉是 ajaxReturn 方法有点问题。

    提示信息全部在页面上被 Unicode 编码。
    yao978318542
        6
    yao978318542  
       2016-08-08 09:31:39 +08:00
    ajaxReturn 这个方法呢
    cevincheung
        7
    cevincheung  
       2016-08-08 09:32:46 +08:00
    @Raul7
    ajaxReturn 对应的是 AJAX 请求。你直接页面请求肯定会是一堆 unicode 码的- -#
    allanxiong
        8
    allanxiong  
       2016-08-08 10:15:16 +08:00
    Raul7
        9
    Raul7  
    OP
       2016-08-08 10:33:27 +08:00
    @yao978318542 @cevincheung ajaxReturn 方法的代码:
    protected function ajaxReturn($data,$type='',$json_option=0) {
    if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');
    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 'JSONP':
    // 返回 JSON 数据格式到客户端 包含状态信息
    header('Content-Type:application/json; charset=utf-8');
    $handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
    exit($handler.'('.json_encode($data,$json_option).');');
    case 'EVAL' :
    // 返回可执行的 js 脚本
    header('Content-Type:text/html; charset=utf-8');
    exit($data);
    default :
    // 用于扩展其他返回格式数据
    Hook::listen('ajax_return',$data);
    }
    }

    在网上查询,好像很多都说是跟 json_encode 有关系。
    wkan
        10
    wkan  
       2016-08-08 10:48:16 +08:00 via iPhone
    qiayue
        11
    qiayue  
       2016-08-08 10:49:35 +08:00
    没事,你肉眼看是 unicode ,但是你直接 js 使用会自动变成中文。
    yao978318542
        12
    yao978318542  
       2016-08-08 15:37:49 +08:00
    我的天 你直接修改 添加一个 html 格式的不就 ok 了
    y10n
        13
    y10n  
       2016-08-08 16:47:57 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2931 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:10 · PVG 22:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.