问题:  当后台获取到前台传来的文件时(例如上传功能, 导入功能), 返回类型为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>标签解决方法的更多相关文章

  1. php查询mysql返回大量数据结果集导致内存溢出的解决方法

    web开发中如果遇到php查询mysql返回大量数据导致内存溢出.或者内存不够用的情况那就需要看下MySQL C API的关联,那么究竟是什么导致php查询mysql返回大量数据时内存不够用情况? 答 ...

  2. 微信授权、获取用户openid-纯前端实现——jsonp跨域访问返回json数据会报错的纯前端解决办法

    近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活. 首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url https ...

  3. 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法

    在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...

  4. 2.SpringBoot之返回json数据

    一.创建一个springBoot个项目 操作详情参考:1.SpringBoo之Helloword 快速搭建一个web项目 二.编写实体类 /** * Created by CR7 on 2017-8- ...

  5. SpringBoot之返回json数据

    一.创建一个springBoot个项目 二.编写实体类 /** * 返回Json数据实体类 */ public class User { private int id; private String ...

  6. C#从http上拿返回JSON数据

    C#如何拿到从http上返回JSON数据? 第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) ...

  7. C#如何拿到从http上返回JSON数据?

    第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) 第四章:C#如何生成JSON字符串提交给接口 ...

  8. SpringMVC——返回JSON数据&&文件上传下载

    --------------------------------------------返回JSON数据------------------------------------------------ ...

  9. Jquery 返回json数据在IE浏览器中提示下载的问题

    Jquery 返回json数据,IE浏览器提示下载的问题,当提交完数据后返回的本来是json数据的,在火弧里测试正常,解决方法如下 今天遇到Jquery 返回json数据,IE浏览器提示下载的问题,当 ...

随机推荐

  1. 莫名戳中"肋骨"的文章

    1 起初,我们总是会害怕,害怕不能得到自己渴望的物质生活,害怕遇不到那个好好爱自己的人,害怕失去青春也换不回事业上的进步,害怕会做下一个让自己悔恨的决定,可这一路,我们就是这样踩着自己的害怕和悔恨走来 ...

  2. ATR与ATS

    ATR:answer to reset  复位应答 ATS:answer to select 选择应答

  3. ostream类重载的operator<<()函数

    ostream类重载了operator<<()以识别不同的类型,如: int short  long unsigned int unsigned short unsigned long f ...

  4. js之内置对象

    内置对象(Global和Math):JS程序在执行之前就已经存在,开发人员不必再取实例化的内置对象 下面对Global对象进行介绍一下,Math用的不多就不做介绍了 1.Global对象 Global ...

  5. WebSocket学习

    在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API.WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术.这个新的API提供了一个方法 ...

  6. 自动回复消息-微信公众平台开发4(asp.net)

    接着上一节的processRequest 处理函数,代码如下: /// <summary>    /// 处理微信发来的请求     /// </summary>    /// ...

  7. UIKit 框架之UICollectionViewController

    1.自定义单元格 #import <UIKit/UIKit.h> @interface myCollectionViewCell : UICollectionViewCell @prope ...

  8. 图片上传前的预览(PHP)

    1.先创建一个file表单域,我们需要用它来浏览本地文件.<form name="form1" id="form1" method="post& ...

  9. 运用socket实现简单的服务器客户端交互

    Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...

  10. linux install

    http://www.ubuntu.org.cn/index_kylin 先在官网下个Ubuntu  是个iso 然后下个UltraISO 是个软件 插好空u盘 打开软件 在菜单栏上 点击 文件-&g ...