【发布时间】:2021-02-09 16:21:52
【问题描述】:
我正在 Spring Boot 中使用前端 JSP 开发应用程序。我有以下问题:
我有一个不同行的表。如果需要,我可以单击一个按钮来更新每一行。当我单击一行并更改一些数据时,一切正常。问题是当我单击一行时,关闭或保存此模式,然后打开另一行并再次编辑。模态很好,但是当我保存时,我收到 2 个 POST 来更新后面的行和实际的行。
我不使用任何奇怪的东西...可能我需要在关闭或保存时“清理”模态?
我的一个模态(这发生在所有带有模态更新行的表中)
HTML/JSP:
<!-- UPDATE DISP MODAL -->
<div id="updateDispModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form id="updateDispForm" class="needs-validation">
<div class="modal-header">
<div class="modal-title">
<h5 id="modalTitle">
<spring:message code="shares.displacement.update.btn" />
</h5>
</div>
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="form-group">
<label for="activityCenter" class="col-form-label"><spring:message code="shares.displacement.table.activity.center" /></label>
<select id="activityCenter" name="activityCenter" class="form-control" required>
<option disabled selected="selected">
<spring:message code="shares.displacement.table.activity.center" />
</option>
<c:forEach items="${teamLeaders}" var="teamLeader">
<option value="${teamLeader.userId}">
<spring:message code="${teamLeader.name} ${teamLeader.surnames}" />
</option>
</c:forEach>
</select>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="form-group">
<label for="displacementDate" class="col-form-label"><spring:message code="shares.displacement.table.total.time" /></label>
<input id="displacementDate" name="displacementDate" type="datetime-local" class="form-control" required>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-md-6">
<label for="manualHours" class="col-form-label"><spring:message code="shares.displacement.total.time" /></label>
<input type="time" class="form-control" id="manualHours" name="manualHours">
</div>
<div class="col-sm-12 col-md-6">
<label for="roundTrip" class="col-form-label"><spring:message code="shares.displacement.round.trip" /></label>
<input type="checkbox" class="form-control" id="roundTrip" name="roundTrip" style="width: 20px">
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="observations" class="col-form-label"><spring:message code="shares.displacement.observations" /></label>
<textarea id="observations" name="observations" class="form-control" rows="6"></textarea>
</div>
</div>
</div>
<input type="hidden" class="form-control" id="projectId" name="projectId">
</div>
<div class="modal-footer clearfix">
<div class="w-100">
<div class="float-left">
<button type="button" class="btn btn-sm" data-dismiss="modal"><spring:message code="cerrar" /></button>
</div>
<div class="float-right">
<button id="updateDispBtn" type="button" class="btn btn-sm btn-success"><spring:message code="save" /></button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- /CREATE MODAL -->
JavaScript:
$('#updateDispBtn').click(function () {
$.ajax({
type: "PUT",
url: "/shares/displacement/" + id,
data: $('#updateDispForm').serialize(),
success: function(msg) {
$('#dTableSignings').DataTable().ajax.reload();
showNotify(msg, 'success');
},
error: function(e) {
showNotify(e.responseText, 'danger');
}
});
$('#updateDispModal').modal('hide');
});
【问题讨论】:
-
您好,后面的一排是什么意思?另外,您的网址中的
id是什么? -
我打开 ID 为 1 的第一行并点击保存。该行已更新。其次,我打开ID为3的行,修改参数并点击保存。所以我收到后端 2 份具有相同 FormData 的请愿书(更新 ID 1 和 ID 3)。 imgur.com/9ShoxjQ
-
好的,你从哪里得到
id? -
我使用异步函数来加载模式中的信息 (imgur.com/tNqx29N)。每个行按钮都有一个事件(onclick),它在 DataTable 加载事件(imgur.com/1YYKsNp)上加载
-
你能把控制台放在你的点击事件中,看看当你点击更新按钮时它被调用了多少次。还有必要把点击事件放在aysnc函数中吗?
标签: javascript html jquery spring bootstrap-4