今天遇到一个奇怪的现象,就是用JQuery的post怎么就是通不过。。。。。晕。。。摸索了一下实验结论:
首先将contentType修改为application/json,然后将JSON对象序列化为字符串
//重载掉默认的postJSON数据格式
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
'type' : 'POST',
'url' : url,
'contentType' : 'application/json',
'data' : JSON.stringify(data),
'dataType' : 'json',
'success' : callback
});
};
function save(_this){
var $tr=$(_this).parents("tr");
var inputs=$tr.find("input");
var data={};
data.name=inputs.eq(0).val();
data.sex=inputs.eq(1).val();
data.dept=inputs.eq(2).val();
data.job=inputs.eq(3).val();
data.mobilephone=inputs.eq(4).val();
data.telephone=inputs.eq(5).val();
data.address=inputs.eq(6).val();
data.qq=inputs.eq(7).val();
data.email=inputs.eq(8).val();
data.remark=inputs.eq(9).val();
data.id=inputs.eq(10).val();
console.log(data);
var callback = function (data) {
alert(JSON.stringify(data));
} ;
$.postJSON('${ctx}/testdb/update', data, callback) ;
}
然后提交数据, 服务器端这样就可以成功200,但是使用@RequestBody就会报错
@RequestMapping(value="/update",method=RequestMethod.POST)
@ResponseBody
public void update(@RequestParam Map<String, String> params, final HttpServletResponse response) {
System.out.println(params.keySet().toString());
outJson("{'1':'2'}",response);
}
data = JSON.stringify(data); 解决400错误
contentType:’application/json;charset=UTF-8’解决415错误
当时确实没有时间想的这么多就没有细查下去但是今天看到了一篇博客写的比较全面,详细。。
可以供大家参考一下: