springboot+layui用js发送put请求,并接收对象
有以下几点要注意的
springboot中要设置这个过滤器,如果是在springmvc中,就在web.xml中设置,道理是一样的
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
// 就是这个
@Bean
public HttpPutFormContentFilter httpPutFormContentFilter() {
return new HttpPutFormContentFilter();
}
}
在Controller中要在接收的对象前面设置@RequestBody
@RequestMapping(value = "/test", method = { RequestMethod.PUT })
public JSONObject gmm(@RequestBody UserVo userVo) throws Exception {
JSONObject obj = new JSONObject();
System.out.println("---------------");
return obj;
}
layui中的请求方法
var url = "/test";
var data = JSON.stringify($('.layui-form').serializeObject());//这个方法很关键JSON.stringify(),没有这个方法后台转换不了
ajaxsubmit(url,data);
function ajaxsubmit(url,data){
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url:url,
data:data,
type:"PUT",
dataType:"json",
success:function(data){
if(typeof(data) != 'undefined'){
layer.msg(data.message);
setTimeout(function(){reload()},1*1000);
}else{
layer.msg("返回错误,请联系管理员!");
}
},
error:function(data){
layer.msg("请求错误,请联系管理员!");
}
});
}
附一个form转json对象的办法,这个方法上面有用到,是自定义的
$.prototype.serializeObject = function () {
var a,o,h,i,e;
a = this.serializeArray();
o={};
h=o.hasOwnProperty;
for(i=0;i<a.length;i++){
e=a[i];
if(!h.call(o,e.name)){
o[e.name]=e.value;
}
}
return o;
}
参考链接
https://blog.csdn.net/kshon/article/details/82682768
https://blog.csdn.net/pingweicheng/article/details/81019850
https://blog.csdn.net/qq_37144354/article/details/79922048
https://blog.csdn.net/weixin_33973609/article/details/93323390
摘录第4篇参考文章关于传参的一些总结:
1:JSON提交方式: Content-Type:application/json 后端:对象接收:除了:get请求,不需要增加@ReqeustBody注解,其它的都需要。 参数接收:使用:@RequestParam 或者不用。 使用这种请求: 其它后端同事开发的时候:客户端(SOAP)模拟请求时,有了@ReqeustBody参数接收不到,于是去掉,前端开发时,更新代码又加上。因为公司网不能下载插件,后换成了:form表单提交。 2:form表单提交方式:Content-Type:application/x-www-form-urlencoded form表单数据格式:为:param1=111¶m2=222 这种开式。 后端:对象接收:除了:所有请求:都不加@ReqeustBody注解 参数接收:可以使用:@RequestParam 或者不用。

浙公网安备 33010602011771号