必威体育Betway必威体育官网
当前位置:首页 > IT技术

ajaxFileUpload上传,后台返回json在前端无法解析

时间:2019-08-24 22:10:00来源:IT技术作者:seo实验室小编阅读:70次「手机版」
 

ajaxfileupload

ajaxfileupload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况。

仔细调试发现其实在向服务器提交数据后,是进入了success回调函数的,只是没有解析到json数据。那就说明服务器做出了响应的,进入了success方法的,唯一的问题就是前台接受的数据不是json格式的。

 使用console.log输出data发现并不是纯粹的json数据,其中头部多了<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>

 找到问题就很好处理了,虽然设置了data-type参数是json类型的,但依然出现了这个bug,再看一下源码就豁然开朗了

=====这里是源码的内容==========

  • ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况。

仔细调试发现其实在向服务器提交数据后,是进入了success回调函数的,只是没有解析到json数据。那就说明服务器做出了响应的,进入了success方法的,唯一的问题就是前台接受的数据不是json格式的。

 使用console.log输出data发现并不是纯粹的json数据,其中头部多了<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>

 找到问题就很好处理了,虽然设置了data-type参数是json类型的,但依然出现了这个bug,再看一下源码就豁然开朗了

=====这里是源码的内容==========

if ( type == "json") 
      eval( "data = " + data);
    
=======================================
原来返回的json数据是通过eval生成的,意思是接受的数据一直是text类型的,只是根据data-type的参数再转化,这是因为ajaxFileUpload是通过创建iframe层异步来上传文件的

根据这个原理可以有2种解决办法
1:在前台将<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>过滤,这样就是干净的json数据
var reg = /<pre.+?>(.+)<\/pre>/g;  
var result = data.match(reg);  
data = RegExp.$1;
2:将源码里的eval里的参数直接过滤
 if ( type == "json" ){
            data = jQuery.parseJSON(jQuery(data).text());
        }
再或者让服务器返回text类型的data再转化成json数据

相关阅读

DISTINCT 返回唯一不同的值,去除重复值

DISTINCT 用于返回唯一不同的值语法:SELECT DISTINCT 列名称 FROM 表名称 DISTINCT用于多列 表A:SQL:select distinct name, id from

关于ckfinder+ckeditor 图片上传路径问题

本人java 小白。 在做公司的小项目用的是jeesite,里面的图片和富文本用的是 ckfinder+ckeditor。过程中遇到了路径的问题。百度了

哪个平台上传视频能赚钱?分享几个看视频发小视频能赚钱

现在小视频走进了我们的生活,打开手机,到处都是关于小视频的,这也是受到很多年轻人欢迎的一种娱乐方式。以前呢,很多人以为小视频是网

天猫logo图片在哪里上传?淘宝与天猫有什么区别?

天猫logo是天猫的特别标志,是淘宝区别于天猫的标志,淘宝里有天猫标志的是天猫店铺,没有天猫标志的是淘宝店铺,现在有“企”标志的是企

小程序开发-curl请求curl_exec返回false,curl_error返

小程序开发,调用小程序登录接口获取sessionkey,使用curl_exec返回false,写法如下: $get_token_url = 'https://api.weixin.qq.com/sns

分享到:

栏目导航

推荐阅读

热门阅读