首页 > Web开发 > 详细

返回Json数据浏览器带上<pre></pre>标签解决方法

时间:2015-11-25 13:21:53      阅读:1124      评论:0      收藏:0      [点我收藏+]

问题:  当后台获取到前台传来的文件时(例如上传功能, 导入功能), 返回类型为application/json, 这个时候响应到前端的JSON格式的数据格式可能是:

<pre style="word-wrap: break-word; white-space: pre-wrap;">{"JsonKey":"JsonValue"}</pre>

这个是不同浏览器对返回数据处理的问题。

 

 

 

解决方法:

 

  

 

  1. 在前端解决

 

 

 

var reg = /<pre.+?>(.+)<\/pre>/g;  
var result = data.match(reg);  
data = RegExp.$1;

data就是后台返回前端的数据, 用正则表达式处理一下即可。


 

  2. 在后台解决

将返回的类型从application/json改为text/html
这个解决方法因为每个系统后台采用Struts或者SpringMVC不同可能处理有点不一样在此就不举例了。

 

 

 

上传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") })

 

 

返回Json数据浏览器带上<pre></pre>标签解决方法

原文:http://www.cnblogs.com/Rozdy/p/4994214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!