• 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);
                        }
                    }
                });
  • 相关阅读:
    BW中变量增强学习
    视频压制参数设置详细说明(转)
    swf文件格式解析(二)
    关于FP10.2的自定义鼠标功能
    swf文件格式解析(一)
    如何判断winform程序已安装过
    flashbuilder4.5 作为eclipse插件
    安装程序无法创建新的系统分区,也无法定位现有系统分区 (转载于百度文库)
    【转】VS2008建造打包法度将安装路径写入注册表
    【高清视频压制教程】使用MeGUI压制视频教程(以PSP视频为例)(转载)
  • 原文地址:https://www.cnblogs.com/tyb1222/p/4318829.html
Copyright © 2020-2023  润新知