美文网首页我爱编程
jQuery 利用jsonp获取数据时显示为中文而非utf8编码

jQuery 利用jsonp获取数据时显示为中文而非utf8编码

作者: Nomandia | 来源:发表于2018-08-09 11:27 被阅读0次

    有时候,我们用jQuery使用的jsonp的形式获取跨域数据,但其返回值是utf8的原始编码,如果直接渲染到页面的话会显示 \uXXXX\uYYYY 这样的字符而非中文。其实我们只需要做一个简单的转换既能解决此问题。

    // 一个常见的jQuery ajax请求
    $.ajax(url, {
        'dataType':'jsonp', // 这里总是会用get,无论是否设置
        'contentType':'application/x-www-form-urlencoded; charset=UTF-8', // 如果编码不同可以指定下。考虑到某些语言强制utf-8编码或前后端统一则可以省略
        'error':function(XHR, textStatus, errorThrown){
            // 错误处理
        },
        'complete':function(XHR, textStatus){
            // 请求完成后处理在 error或success之后,必定执行
        },
        'success':function(data, textStatus, jqXHR){
            var o = eval('('+data+')'); // 这里会利用eval函数解析返回字符串使其变成对象
            console.log(JSON.stringift(o)); // 再利用JSON对象将其解析成字符串
        }
    });
    
    

    利用 eval('('+data+')') 解析字符的话需要注意的是,这个可能会存在被攻击的风险。比如:解析的字符串是 alert('im hack') 时会有问题,因此不推荐直接引用未知源的数据。


    如果是PHP的后台,则只需要这样做即可:

    json_encode($data, JSON_UNESCAPED_UNICODE)
    

    相关文章

      网友评论

        本文标题:jQuery 利用jsonp获取数据时显示为中文而非utf8编码

        本文链接:https://www.haomeiwen.com/subject/vfuqbftx.html