ajaxfileupload不支持响应头ContentType为application/json的设置
来源:互联网 发布:淘宝客服介入流程 编辑:程序博客网 时间:2024/05/18 01:35
如题,简单记录一下这个问题的解决办法,导致问题的核心原因是:ajaxfileupload不支持响应头ContentType为application/json的设置,并且IE也不支持这种格式,而当我们用SpringMVC的@ResponseBody注解的时候会自动将响应类型设置为application/json,所以解决办法只有手动设置响应类型。
Step1 弃用@ResponseBody,通过流手动输出响应,并指定响应类型为text/html
@RequestMapping(value = "/fileImport2")
public Map fileImport2(HttpServletRequest request,
HttpServletResponse response, MultipartHttpServletRequest req,
@RequestParam("filename") MultipartFile uploadFile) {
response.setContentType("text/html;charset=utf-8");
try {
// 文件上传
String updateLoadPath = FileOperateUtil.uploadExcel(req, request,
uploadFile);
String publishPath = request.getSession().getServletContext()
.getRealPath("/");
//...略
response.getWriter().write("{\"data\":\"ok\"}");
} catch (Exception e) {
e.printStackTrace();
try {
response.getWriter().write("{\"data\":\"error\"}");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return null;
}
Step2 将$.ajaxFileUpload的dataType设置为text(否则回调函数的值是[object.object])
$.ajaxFileUpload
(
{
url: postPath+"/app/studentScore/fileImport2", //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'filename', //文件上传域的ID
dataType: 'text', //返回值类型 一般设置为json
success: function (data) //服务器成功响应处理函数
{
alert(data);
var repObj = $.parseJSON(data);
if (repObj.data == 'ok')
{
alert("导入成功!");
}
else
{
alert("数据异常!");
}
}
}
);
问题解决了, 最后简单看一下FireBug的调试信息:
- ajaxfileupload不支持响应头ContentType为application/json的设置
- $.ajax type为post时 contentType 设置为 'application/json' 会有问题
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- $.ajax中contentType: “application/json” 的用法
- ajax有无contentType: "application/json"的区别
- struts2 ajax提交,令我崩溃的contentType:"application/json"
- ajax请求里的contentType: "application/json"作用
- contenttype 为application/x-www-form-urlencoded 和 application/json 区别和说明
- $.ajax 中的contentType为application/json时,服务端接收不到数据
- springmvc 设置content-type为 application/json
- ajax 设置请求头参数之--contentType
- Tornado设置http的响应头header
- ContentType设置的内容
- ajaxfileupload.js不支持IE9,IE10的解决方案
- Ajaxfileupload 上传文件后返回response的contentType错误问题
- response.设置响应头
- shell调试
- android圆形头像
- Hashtable 源代码
- android
- 下拉加载更多DEMO(js实现)
- ajaxfileupload不支持响应头ContentType为application/json的设置
- Web 目录枚举与遍历漏洞解决
- 深度学习:实际问题解决指南
- CANopen预定义连接集
- 好的文章收藏
- Linux命令
- UML
- Getting the System Version
- Deep Learning in a Nutshell: Core Concepts