javascript - js中神奇的出现一个不可见字符,求解决方法

 卢嘉怡i 发布于 2022-11-09 22:13

一个上传的地方,

    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实在渣,写了半天写不对,不知道是写的代码有问题还是这样的思路不对。求表哥帮忙写一个

2 个回答
  • 看了一下 charcode是65279,百度了下,好像是windows的原因

    2022-11-12 01:42 回答
  • 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());

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

    2022-11-12 01:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有