最近做的项目要求要把页面上的表单数据传递到后端,并用一个实体类对象接收相应的属性值。开始时我没有用ajax,直接将表单传回去,发现会一直报错HTTP 415 unsupported media type。然后在网上查别的博主的博客发现大部分都是修改ajax里面的一些参数,后来也就上了ajax。期间走了不少弯路,现在讲自己的实现过程分享给大家。第一次写博客,有什么不当的地方还请各位朋友积极批评和指正,共同进步!
前端页面
这里主要列出需要传递的表单的标签信息和ajax的配置写法
表单
<form id="form1" method="post" name="form1">
...
<!--提交按钮-->
<button class="btn btn-primary btn-sm" type="submit" id = "submit" onclick="send();" >
ajax
function send(){
$.ajax({
type:"POST",
/*dataType:"json",*/
async:true,
/* contentType: 'application/json; charset=UTF-8', */
url:"这里写你的请求页面,也就是你需要跳转到控制器的执行函数名称,我这里的话写的是相对路径addmaterail",
data:$("#form1").serialize(),
success:function(){
<!--自行设计-->
},
error:function(){
<!--自行设计-->
}
})
}
控制器
...
@ResponseBody
@RequestMapping("/addmaterial")
public String addmaterial(ProductParameter product) {
System.out.println(product.toString());//打印出实体类的属性值
}
注意我这里没有向后面拓展资料的一些博客那样在ProductParameter product 前面加上@RequestBody,因为前端ajax那里已经将content-type注释掉了,也没有写datatype。此时的请求头和响应头是这个样子的:
表单的数据格式是默认设置application/x-www-form-urlencoded;charset=UTF-8
最后的效果
控制台返回的信息,可以看出实体类对象已经成功拿到前端传值
拓展资料
关于ajax的具体写法尤其是URL的写法请移步至如下博客:
SpringMVC和Ajax【数据交互示例】总结.
jQuery实现ajax提交form表单(可以是提交json),用springmvc接收。图文详解.
Ajax请求中url三种写法方式(Ajax请求路径问题,$.ajax中url携带当前页面路径原因).
HTTP报错415、400:
使用SpringMVC前台发送数据时得到400或415错误!.
@RequestBody出现请求415问题.