目的功能:
通过点击按钮修改对象的一个属性;如图,点击“禁用按钮”,修改cooperator对象的status字段。

代码实现(有问题)
JSP
<c:choose>
<c:when test="${account.admin!=null && cooperator.cooperatorStatus==1}">
<a type="button" class="btn btn-default btn-xs" href="<spring:url value="/toggleAdminStatus/${admin.adminId }"/>" >禁用</a>
<button type="button" class="btn btn-primary btn-xs" onclick="updateCooperatorStatus(${cooperator.cooperatorId},0)">
禁用</button>
</c:when>
<c:when test="${account.admin!=null && cooperator.cooperatorStatus==0}">
<button type="button" class="btn btn-primary btn-xs" onclick="updateCooperatorStatus(${cooperator.cooperatorId},1)">
启用</button>
</c:when>
</c:choose>
ajax
function updateCooperatorStatus(cooperatorId , cooperatorStatus){
$.ajax({
url : '/updateCooperatorStatus.json',
data:{ 'cooperatorId':cooperatorId,
"cooperatorStatus":cooperatorStatus
},
method:"post",
cache: false,
dataType:'json',
success : function(data) {
if (data.resultCode == 0) {
document.location.reload();
}
else {
alert(data.resultMessage);
}
},
error : function(data) {
alert("状态修改,请稍后重试");
}
});
}
java.controller
@RequestMapping("/updateCooperatorStatus")
@ResponseBody
public Result<?> updateCooperatorStatus(Cooperator cooperator){
int status = cooperator.getCooperatorStatus();
Cooperator record = this.cooperatorService.getCooperatorById(cooperator.getCooperatorId());
if(record == null)
return new Result<>(AquaticErrorCode.COOPERATOR_NOT_EXIST, "合作客户不存在");
record.setCooperatorStatus(status);
record.setCooperatorModifyTime(new Date());
return this.cooperatorService.updateCooperator(record);
}
运行效果
IDEA.TOMCAT
下运行没问题,使用Chrome调试也没有报错。
Tomcat
报错;

Failed to load resource: the server responded with a status of 404 ()
:8080/updateCooperatorStatus.json?cooperatorId=11&cooperatorStatus=0&_=1522683700418
(‘_=1522683700418’后缀是jquery自动加的,防止缓存)
写在最后
鉴于这个问题比较奇怪,故意记录一下,希望引发读者的思考。欢迎大家讨论。
(目前我改变实现的方式来完成这个功能)
本文介绍了一个在Tomcat环境下遇到的AJAX请求返回404错误的问题及解决思路。通过分析代码实现,包括JSP页面的条件渲染、JavaScript AJAX调用以及后端Controller处理逻辑,探讨了可能的原因并提出了相应的解决方案。

被折叠的 条评论
为什么被折叠?



