http 415 unsupported media type 报错解决方案

背景:系统架构还是用的ssm+bootstrap。前端需要将对象放在list集合中,然后传输到后台进行处理,于是用了

JSON.stringify(batchMaintainBillInfoList)方法将json传到后台直接转化为list
//前端代码
			$('#batchMaintainButton').click(function () {
				var batchMaintainBillInfoList = [];
                $("input[name='billNo']").each(function() {
                    var count = $(this).parent().parent().attr('id');
                    batchMaintainBillInfoList.push({id:$('#id'+count).val(), billNum: $('#billNum'+count).val(), billCode: $('#billCode').val(),
                    								billUser:$('#billUser'+count).val(),billTime: $('#billTime'+count).val(),
                        							remarks: $('#remarks'+count).val(),billImage: $('#billImage'+count).val()});
                });
                if (batchMaintainBillInfoList==null || batchMaintainBillInfoList.length==0){
                    showTip("维护信息不能为空","error" ,2000,0);
                    return false;
				}
                $.ajax({
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    },
                    type: 'POST',
                    url: '${ctx}/finance/settle/settleBillInfoInvoicing/batchMaintainBillInfoSave',
                    data: JSON.stringify(batchMaintainBillInfoList),
                    success: function (data) {
                        if(data.res_code==1){
                        }else{
                        }
                        top.$.jBox.tip(data.res_desc);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        top.$.jBox.tip(errorThrown);
                    }
                });
            });
//后端代码
//前端传输的数据,后端可以直接用list集合来接收

    @RequestMapping(value = "batchMaintainBillInfoSave",method = RequestMethod.POST)
    @ResponseBody
    public IntfzResp batchMaintainBillInfoSave(@RequestBody List batchMaintainBillInfoList) {
        StringBuffer message = new StringBuffer();

        for (BatchMaintainBillInfo batchMaintainBillInfo : batchMaintainBillInfoList) {
            try {
                
            }catch (Exception e){
               
                
            }
        }
            if (StringUtils.isBlank(message.toString())){
                message.append("批量维护发票信息完成");
            }
        return IntfzResp.resSuccess(message.toString());
    }

提交请求之后页面报错http 415 unsupported media type,由于是第一次用JSON.stringify(batchMaintainBillInfoList)这种方式,总是以为自己这里写错了,而且百度一下,发现好多用我这个方法导致415的,就更加确定了是因为这个原因导致415的。

后来请教同事,同事让我把我的提交部分逻辑给注释掉,发现没有提交的时候还是会报这个错误。

于是想到我的点击按钮的类型,是submit

当type是submit时会直接将表单提交,但是我后台接收参数的话,是没有办法这样直接将表单接收下去的,需要处理一下,所以导致报错415,后台服务无法解析。后来我将type改为button就好了。

PS:这个bug启发了我一个思路:发现问题的时候,先要确定是什么导致bug,而不是盲目觉得哪里不熟,肯定是哪里的问题云云,这个问题,很简单,但是花费了我很久的时间,觉得很浪费。思路还是要开阔一些。

这个帖子希望能够帮到大家。每天进步一点!大家共勉!加油!!!

你可能感兴趣的:(java_web,415报错问题)