V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Raul7
V2EX  ›  PHP

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

  •  
  •   Raul7 · Aug 7, 2016 · 3590 views
    This topic created in 3551 days ago, the information mentioned may be changed or developed.
    使用 ajaxReturn 方法将提示信息返回到前台打印到页面。但是提示信息全部被 Unicode 编码。怎么解决??
    13 replies    2016-08-08 16:47:57 +08:00
    kkk330
        1
    kkk330  
       Aug 8, 2016 via Android
    首先应该是 utf8 编码的文字,不是 Unicode ,然后复制那段 utf8 到 console ,粘贴,回车,记得用引号包起来; 另外好像 network 里面的 response 可以直接看,记不清了
    cevincheung
        2
    cevincheung  
       Aug 8, 2016
    js 直接反解 JSON 输出的是汉字。莫纠结。
    likezun
        3
    likezun  
       Aug 8, 2016
    珍爱生命,远离 Thinkphp
    yao978318542
        4
    yao978318542  
       Aug 8, 2016
    你是输出到浏览器的控制台还是直接页面打印的啊 贴代码啊!
    Raul7
        5
    Raul7  
    OP
       Aug 8, 2016
    @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  
       Aug 8, 2016
    ajaxReturn 这个方法呢
    cevincheung
        7
    cevincheung  
       Aug 8, 2016
    @Raul7
    ajaxReturn 对应的是 AJAX 请求。你直接页面请求肯定会是一堆 unicode 码的- -#
    Raul7
        9
    Raul7  
    OP
       Aug 8, 2016
    @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  
       Aug 8, 2016 via iPhone
    qiayue
        11
    qiayue  
    PRO
       Aug 8, 2016
    没事,你肉眼看是 unicode ,但是你直接 js 使用会自动变成中文。
    yao978318542
        12
    yao978318542  
       Aug 8, 2016
    我的天 你直接修改 添加一个 html 格式的不就 ok 了
    y10n
        13
    y10n  
       Aug 8, 2016
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3322 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 11:20 · PVG 19:20 · LAX 04:20 · JFK 07:20
    ♥ Do have faith in what you're doing.