上传File时,浏览器总是添加<pre>的解决办法
在使用Structs的FileUpload组件进行上传文件的时候,在返回的JSon字符串里面总是莫名其妙的添加了<pre>标签,例如返回内容为"{\"message\":\"导入文件已成功\",\"result\":\"OK\"}",在浏览器里面就变成了"<pre style="word-wrap: break-word; white-space: pre-wrap;">"{\"message\":\"导入文件已成功\",\"result\":\"OK\"}"</pre>",这样就导致Ajax解析返回值的时候出现错误。
我的上传代码,默认总是进入到error的处理中。
jQuery.ajaxFileUpload({ type:"POST", url:"/****/upload.action?file="+fileName, secureuri:false, fileElementId:"upload", dataType: "json", success:function (data, status) { if (data != null) { data = JSON.parse(data); MBJ.alert("提示", data.message); } else { MBJ.alert("提示", "上传文件出错, 服务器返回错误信息: status = " + status); } }, error:function (data, status, e) { MBJ.alert("提示", "上传文件出错: status = " + status); } });
谷歌了一圈之后,发现很多人和我是一样的,解决办法都是把response的返回类型设置为【text/html】。在Struts2中需要在Action的配置中这样设置。
<result name="success" type="json"> <param name="root">msg</param> <param name="contentType">text/html;charset=UTF-8</param> </result>
如果用的是annotation的方式的话,需要加上这句话
@Action(value = "upload", results = { @Result(name = SUCCESS, params = { "root", "msg", "contentType",
"text/html;charset=UTF-8" }, type = "json") })
posted on 2013-06-03 16:56 南郭先生kaka 阅读(10856) 评论(1) 编辑 收藏 举报