spring mvc ajax 400解決

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);
                    }
                }
            });
相關文章
相關標籤/搜索