前台ajax一直报404,后台方法断点根本进不去,搞了好久,百思不得其解。
参数的console.log和报错信息如下:
ajax方法如下:
$.ajax({
type: 'POST',
url: "${ctx }/manage/submitPublicClass",
/* dataType: "json", */
data :$('#publicClassId').serialize(),
success: function(result) {
if(toPage==0){
//保存则跳转列表页
location.href="${ctx}/manage/publicClassListByPage";
}else if(toPage==1){
//预览则跳转预览页
location.href="${ctx}/manage/toUpdatePublicClass?id="+result.msg;
}
},error:function(result){
}
})
后台方法如下:
@RequestMapping("/manage/submitPublicClass")
@ResponseBody
public Response<String> submitPublicClass(PublicClassInsertVo publicClassInsertVo,Long fileId){
.......
return res;
}
vo类如下:
@Data
public class PublicClassInsertVo implements Serializable {
private static final long serialVersionUID = 1L;
private PublicClass publicClass;
private List<PlanAuthority> planAuthorityList;
private String[] planOrCourseId; //学习计划或基础课程ID
private String type; //学习计划或基础课程
private String studyPlanName; //学习计划名称
private String studyPlanDescription; //学习计划描述
}
最后进去chrome的network看参数才发现:
这个地方的select选择值居然是“请选择”!!!!后台接受参数肯定报错了。
前台这个select框是这样写的:
<select name="publicClass.certificationId">
<option>请选择</option>
<option value="1" <c:if test="${publicClass.certificationId==1 }">selected</c:if>>1</option>
<option value="2" <c:if test="${publicClass.certificationId==2 }">selected</c:if>>2</option>
</select>
请选择那个下拉框没有写value属性,若被选中则值就是“请选择”,所以出错了。
应修改为
<option value="">请选择</option>