采用ajaxfileupload插件提交表单,前端js写法如下:
$.ajaxFileUpload({
url:"${base}/submit/ajaxfileupload.do",
secureuri:false,
fileElementId:"uploadFile",//file标签的id
dataType: "json",
data:{"fileName":$("#fileName").val()},
success: function (result,a,b){
var fileName = result.msg;
alert(fileName);
}
});
可是无论如何页面都没有反应,也没有报错,用firebug查看也能查到返回的json数据。后来加上了error回调:
error:function(data,status,e){
alert(e);
}
加上后,调用总是进入到error的回调函数中,提示:SyntaxError: expected expression, got end of script,网上查找资料也没查出问题原因,于是查看ajaxfileupload的代码,并跟踪断点,发现,返回的并不是json数据,而是html数据
<div id="json"><span class="collapser"></span>{
<ul class="obj collapsible">
<li><span class="prop" title="<root>.msg"><span class="q">"</span>msg<span class="q">"</span></span>: <span class="string">""</span></li>
</ul>}</div>
经过浏览器解析后,是json的html的页面形式,问题找到了,可是什么原因导致的呢,经过查找,在springMVC的xml的配置文件中,添加如下配置,问题解决。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>