The request sent by the client was syntactically incorrect.
ajax发起请求时报400错误。请求代码如下:
var reportId=($(obj).parent().parent().parent().children(":first").attr("value"));
var isChecked=$(obj).prop("checked")=="checked"?1:0;
var reportSetting=$(obj).attr("value");
var setting={reportId:reportId,isChecked:isChecked,reportSetting:reportSetting};
console.log(JSON.stringify(setting));
$.ajax({
type: "POST",
url: "/reportConfiguration",
contentType:"application/json",
data:JSON.stringify(setting),
dataType: "json",
success: function (msg) {
if (msg.isSuccess){
$("#msg").html("设置成功")
}else{
$("#msg").html(msg.result);
}
}
});
服务端代码:
@RequestMapping("/reportConfiguration")
@ResponseBody
public String reportSet(@RequestBody ReportSettingEditBean reportSettingEditBean,HttpServletRequest request){
return "";
}
bean定义:
public class ReportSettingEditBean {
private long reportId; private boolean isChecked; private ReportSetting reportSetting; public long getReportId() {
return reportId;
} public void setReportId(long reportId) {
this.reportId = reportId;
} public boolean isChecked() {
return isChecked;
} public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
} public ReportSetting getReportSetting() {
return reportSetting;
} public void setReportSetting(ReportSetting reportSetting) {
this.reportSetting = reportSetting;
}
} public enum ReportSetting {
Fixed(1),
Scroll(2),
First(4); private int value; public int getValue() {
return value;
} ReportSetting(int value){
this.value=value;
}
}
解决:
在js中核对数据类型与接收数据类中属性的数据类型是否一致。
上例中:ReportSetting 是枚举对象, 而var reportSetting=$(obj).attr("value") 是字符串。修改成整数即可。正确请求如下:
var reportId=($(obj).parent().parent().parent().children(":first").attr("value"));
var isChecked=$(obj).prop("checked")=="checked"?1:0;
var reportSetting=parseInt($(obj).attr("value"));
var setting={reportId:reportId,isChecked:isChecked,reportSetting:reportSetting};
$.ajax({
type: "POST",
url: "/reportConfiguration",
contentType:"application/json",
data:JSON.stringify(setting),
dataType: "json",
success: function (msg) {
if (msg.isSuccess){
$("#msg").html("设置成功")
}else{
$("#msg").html(msg.result);
}
}
});