javascript - js中神奇的出现一个不可见字符,求解决方法
PHP中文网
PHP中文网 2017-04-11 12:37:49
[JavaScript讨论组]

一个上传的地方,

    function upload_init(this_hour_num){
        $('#hour_' + this_hour_num + ' .btn_upload').on({
            click: function(){
                $('#upload_tips').hide();
                data_field = $(this).attr('data-field');
                data_ex = $(this).attr('data-ex');
                $item = $(this);
                /*初始化上传按钮*/
                $('#input_upload').uploadify({
                    "height"          : 30,
                    "multi"          : false,
                    "sizeLimit"       : 500 * 1024 * 1024,
                    "swf"             : "/Public/static/uploadify/uploadify.swf",
                    "fileObjName"     : "download",
                    "buttonText"      : "上传",
                    "uploader"        : "/index.php?s=/course/upload/file_upload/savePath/" + data_field,
                    "width"           : 120,
                    'removeTimeout'   : 1,
                    'fileTypeExts'    : data_ex,
                    "onUploadSuccess" : uploadSuccess,
                    'onFallback' : function() {
                        alert('未检测到兼容版本的Flash.');
                    }
                });

                /*上传成功后方法*/
                function uploadSuccess(file, data) {
//document.write(data);  
                    //var data = $.parseJSON(data);
var data = jQuery.parseJSON(data);
alert(data);
                    if(data.status == 'true') {

代码var data = jQuery.parseJSON(data); 这步出错。原因是多了一个不可见字符导致转码失败。 但是定位又找不到是哪里加的这个字符,所以请表格帮我写个正则,把这个过滤掉
我的想法是在jQuery.parseJSON(data);之前用正则,只取可见字符进行转码(只匹配下面那些就行,用不到的字符全部过滤掉)
大概涉及到的字符是这些:

{"status":"true","info":{"name":"\u4fe1\u606f\u5b89\u5168\u5e08\u7406\u8bba\u8003\u8bd5\u590d\u4e60\u9898(\u6574\u7406).pdf","type":"courseware","size":297069,"key":"download","ext":"pdf","md5":"cf18eb2947ec4fbad4b1c039f9673585","sha1":"281edac612317cdc8ea8b84ce55df1048a9a25f9","savename":"58c6550dbca94.pdf","savepath":"\/Uploads\/courseware\/2017-03-13\/","userid":false,"create_time":1489392909,"file_id":31476}}

js实在渣,写了半天写不对,不知道是写的代码有问题还是这样的思路不对。求表哥帮忙写一个

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
黄舟
let data = '{"status":"true","info":{"name":"\u4fe1\u606f\u5b89\u5168\u5e08\u7406\u8bba\u8003\u8bd5\u590d\u4e60\u9898(\u6574\u7406).pdf","type":"courseware","size":297069,"key":"download","ext":"pdf","md5":"cf18eb2947ec4fbad4b1c039f9673585","sha1":"281edac612317cdc8ea8b84ce55df1048a9a25f9","savename":"58c6550dbca94.pdf","savepath":"\/Uploads\/courseware\/2017-03-13\/","userid":false,"create_time":1489392909,"file_id":31476}}'
let json = JSON.parse(data.trim())
console.log(json)

试试

var data = jQuery.parseJSON(data.trim());

这个字符出现的原因可以参考这里进行排除

大家讲道理

看了一下 charcode是65279,百度了下,好像是windows的原因

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号