zoukankan      html  css  js  c++  java
  • spring mvc ajax 400解决

    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);
                        }
                    }
                });
  • 相关阅读:
    网站色彩搭配
    web前端小知识,安书整理的
    java基础
    简单android UI必会
    java学习总结
    java字符常量与字符串常量的区别
    最近的学习
    简单的ps操作
    HTTP协议概述
    ABP 学习 Setting
  • 原文地址:https://www.cnblogs.com/tyb1222/p/4318829.html
Copyright © 2011-2022 走看看