The request sent by the client was syntactically incorrect.html
ajax發起請求時報400錯誤。請求代碼以下:ajax
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); } } });
服務端代碼:json
@RequestMapping("/reportConfiguration") @ResponseBody public String reportSet(@RequestBody ReportSettingEditBean reportSettingEditBean,HttpServletRequest request){ return ""; }
bean定義:app
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; } }
解決:this
在js中核對數據類型與接收數據類中屬性的數據類型是否一致。url
上例中:ReportSetting 是枚舉對象, 而var reportSetting=$(obj).attr("value") 是字符串。修改爲整數便可。正確請求以下:spa
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); } } });