最近在学习前端基础,在学习的时候,使用Ajax进行表单提交的时候,发现整合的Spring MVC会报出415错误,经过学习,重新将Spring MVC和fastJson整合。
1,使用Ajax进行提交
$.ajax({
// 请求方式
type: "POST",// 请求格式
contentType : "application/json",// 请求地址
url: "<%=basePath%>addBean.do",// 请求数据
data: JSON.stringify(beanModel),// 返回数据格式
dataType: 'json',timeout: 600000,success : function(data) {
console.log("SUCCESS: ",data);
display(data);
},error : function(e) {
console.log("ERROR: ",e);
display(e);
},done : function() {
console.log("DONE");
}
})
2,引入fastJson.jar包。
3,配置xml
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 配置Fastjson支持 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
</list>
</property>
<property name="features">
<list>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
4,编写controler代码
@ResponseBody
@RequestMapping(value="/addBean.do",method = RequestMethod.POST)
public String addCrawlerBean(@RequestBody BeanModel beanModel) {
//相关业务代码
return "Result";
}
说明:@ResponseBody表示的是返回的为直接传输的数据,将不会再去匹配先关的JSP了。@RequestBody会去自动组装为相关的bean数据。
PS:坑。。。。。。。。。。。。。。 在提交的时候,发现,ajax提交的请求无法请求到Spring MVC里面去!!!奇怪了。但是,在请求的JavaScript函数当中,如果用一个alert弹出页面,即可请求到服务器去。于是乎,抓包发现,ajax的post请求的状态为NS_Binding_Aborted。经过网上的查证,发现是还没有响应这个ajax的时候,这个页面被刷新了。后来才发现,原来form表单中,不能使用button这个标签,而是要用input标签,type=“button”,这样不会刷新页面,于是每次都可以请求成功了。
原文链接:https://www.f2er.com/ajax/161322.html