今天为了一个小问题纠结了一天,需求如下:
1.需要异步提交表单上传图片并保存到数据库,返回json数据给前台动态处理
问题描述:提交表单后,返回的json数据无法用eval进行序列化,总是提示无效字符,用firebug查看返回数据中加了pre标签
问题原因:
jax返回的内容,居然自动添加了<pre>标签
在FF,ie,谷歌浏览器中,每个返回的都不一样:ff小写,ie大写,谷歌加style
查了一下,原来是返回的类型不对。
1,页面开头中<meta http-equiv=”Content-Type” content=”text/html ;charset=utf-8″ />
2,在action中Struts2Utils中,如果用renderText 方法,那么里面调用的是render(“text/plain “, text, headers);
这样返回的就是”text/plain”,所以自动添加了pre。修改成调用renderHtml ,就能正常使用了
对照上面的问题原因:
查找发现是上传文件时将 System.Web.HttpContext.Current.Response.ContentType = “text/plain”;修改了
导致作为文本返回了加入了pre
应该修改为“text/html”
上传完文件后,修改了ContentType=”text/html”,如下:
this.HttpContext.Response.ContentType = “text/html”;