ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据

  • 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 == &quot;json&quot; ) {          eval( &quot;data = &quot; + 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数据
 
时间: 2024-10-05 04:19:24

ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据的相关文章

在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1.开始运行 regedit 打开注册表,先备份注册表 2.找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters 3.在 编辑 菜单上指向 新建 ,然后单击 DWORD 值 . 4.键入 EnableAggres

ajaxFileUpload上传文件后提示下载的问题

在某些版本浏览器下ajaxFileUpload上传文件会提示下载, 1:为什么? 可以观察到,即便返回 JsonResult 在返回的头中也没有任何消息体,直接理解为文本了. 2:解决方案 前端: function uploadImg(fimgi) {    if ($("#fimg" + fimgi).val().length > 0) {        //alert($("#fimg" + fimgi).val().length); }    else

用ajaxFileUpLoad上传文件不能正确取得返回值的问题

刚开始没有觉得ajax请求的dataType参数的重要性,用了ajaxFileUpLoad插件后,如果页面代码如下: fileElementId : ['imageToUpload'], url : 'url', dataType : 'json', 返回类型为json数据,那么后台处理上传后,必须将返回值封装成json格式的数据返回给前台页面. 后台封装如下: return "{\"result\":" + "\"OK\"}"

ajaxfileupload上传文件,返回json数据报错的问题。

在使用ajaxfileupload上传文件的时候,文件上传成功了,但是返回的json数据一直解析不了.一直提示:Resource interpreted as Document but transferred with MIME type application/json,从字面上理解返回的是文档不能转换为json.但是从服务器那边返回的response里data-type确实是applicaiton/json.困扰很久,查看ajaxfileupload源代码发现,其实ajaxfileuploa

springmvc+ajaxFileUpload上传文件(前后台彻底分离的情况下)

首先是导入jar包: web.xml: 1 <servlet> 2 <servlet-name>mvc-dispatcher</servlet-name> 3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4 <init-param> 5 <param-name>contextConfigLocation&l

Jquery+ajaxfileupload上传文件

1.说明 ajaxfileupload.js是一款jQuery插件,用于通过ajax上传文件. 下载地址:http://files.cnblogs.com/files/lengzhan/ajaxfileupload.zip 2.使用方法 首先引用js脚本 <script src="Scripts/jquery/jquery-1.9.1.js" type="text/javascript"></script> <script src=&q

Thinkphp 3.0版本上传文件加图片缩略图实例解析

先看html加个表单,注意这里的action 路径要选 对. <div> <form action="__URL__/add_img" enctype="multipart/form-data" method="post" style="padding:10px;" > 图片宽度:<input type="text" name="width" /> 图

Android 网络编程--上传文件及相应的参数到服务器

之前一直在做SiteCheck的项目,所用到的知识大部分都涉及到网络编程方面,所以现在有时间先把它的使用方法及一些注意事项记录下来.在这里我用两种例子让大家了解它的使用方法: (1)上传图片及相应参数到服务器  (2)上传语音及相应参数到服务器.代码比较多.... 先贴上代码,再解析: UploadFileTask .java : (实现异步上传的执行类) <span style="font-size:14px;">public class UploadFileTask e

jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change

关于用ajaxfileupload时,遇到一个要刷新一次页面才能再次上传,用live()方法来绑定 file表单 的change事件就能够解决,直接$("xxx").change()这样只能调用一次,再次调用change的时候不能触发; IE浏览器下 file表单 选择完成自动提交的问题,在每次处理完成后把 file表单 克隆替换成原来的代码 $("#upload").live("change", function () {     $.ajax