1.返回的json串前面多出了<pre style="word-wrap: break-word; .....></pre>的东西,导致转js对象时报错,查看后台也没见到添加<pre>标签,应该是浏览器添加的。
解决办法,把response的contentType设置为text/html即可:
this.getResponse().setContentType("text/html;charset=UTF-8");
Content-Type对浏览器解析的一些影响
当为web服务器输出的内容指定Content-Type为text/html时,浏览器会对内容做一些额外的转换工作,比如"""这样的实体形式就会被替换成最终的字符(双引号")。这在普通情况下并不会引起什么问题,但是不幸的是如果你采用了JSON格式来传输数据,例如:{status:0;data:"content"data"}这样的格式,当"被替换成"后,Javascript就会得到一个错误的数据格式,因为这时候Javascript拿到的数据就变成了{status:0;data:"content"data"}。
这时候,你可以设置Content-Type为text/x-json来解决此问题,但是text/x-json有可能引起一些浏览器兼容性上的问题(一些浏览器会提示下载Content-Type为text/x-json的内容),而更好的做法就是设置Content-Type为text/plain。不过即使这样也并没有完美的解决问题,考虑这样一种情况,你需要上传文件但是你并不想刷新上传页面,这时候一般的做法就是让form的target指向一个Iframe,代码如下:
<form target="iframeId" method="post" action="accept.php"><input type="file" /></form>
当accept.php接收请求并处理完成返回一段JSON数据后问题就发生了,因为accept.php输出的内容被定向到了iframe,而在iframe里浏览器会自动地给数据上加上<pre>标记,这时候JSON又出现格式错误了。
最终的解决方法就是,在JSON传输时指定Content-Type为text/plain,但是遇到上面提的文件上传情况,就应该指定Content-Type为text/html。
分享到:
相关推荐
可将list<T>转化成JSON字符串 使用方法 例: List<自定义类> l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> 或者直接下载这个包
List<Object>转Json的jar包
C# 解析json格式数据为IList<T>
json字符串实体bean或者List<bean>互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢
Json转换为实体;Json转换为IList<T>;实体转换为Json;IList<T>转换为Json;
<artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.0</version> ...
public static string GetJson<T>(List<T> model) where T : new() { return new JavaScriptSerializer().Serialize(model); } /// <summary> /// 反序列化Json为模型对象 /// </summary> /// <typeparam ...
<artifactId>jsonrpc4j</artifactId> <version>1.5.0</version> </dependency> <dependency> <groupId>javax.portlet</groupId> <artifactId>portlet-api</artifactId> <version>2.0</version> </dependency...
NULL 博文链接:https://wuniu2010.iteye.com/blog/1771934
该资源为SpringMVC中json转换所需要的Maven仓库,如果maven下载包的时候速度太慢,可以使用我的这个资源,把这个直接考到本地Maven仓库即可。 对应的Maven依赖如下: <dependency> <groupId>org.codehaus.jackson</...
自动把JSon数据转化为字符串,下面附示例代码: <!doctype html> <html> <body> <script src="json2.js"></script> <script> var obj={a:[2,3],b:{m:[3,4],n:2} }; var jsonStr = JSON.stringify( obj ); alert...
public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass, String dataFormat) { JsonConfig jsonConfig = configJson(dataFormat); JSONArray jsonArray = JSONArray.fromObject(json...
<h2>通过 JSON 字符串来创建对象</h3> <p> First Name: <span id=fname></span><br> Last Name: <span id=lname></span><br> </p> [removed] //txt为字符串 var txt = '{employees:[' + '{firstName:Bill,lastName:...
<br>顺便演示了一下用servlet来返回json数据给ext框架的方式。 <br><br>在grid的演示部分,包括了分页的数据调用和如何处理来自于dwr的数据(dwr的部分和官方网站公布的方法一样) <br>以及grid的事件处理。 <br><br>...
使用谷歌的Json jar包,定义数据类型对象bean,并结合泛型和TypeToken解析简单的Json网络数据。
自己写的json字符串转hashtable,或者把hashtable转为json字符
不创建对象,使用Android自带的和JSON解析相关的类,解析json数据
解析JSon格式字符串等信息解析JSon格式字符串等信息解析JSon格式字符串等信息
json-lib库依赖于多个依赖包,包括commons-beanutils、commons-collections、commons-lang、commons-logging、ezmorph和xom等。如果缺少这些依赖包,将会出现运行错误。 本文主要讲述了Java中将xml、list、map和...