当单击 jsp 中的按钮时,它会再次调用 js 中的就绪函数.错误

When click a button in jsp it again call ready function in js. Error

本文关键字:调用 js 就绪 错误 函数 jsp 单击 按钮      更新时间:2023-09-26

我在jsp中有一个按钮

<button id="btnViewAll">View All</button>

当我点击它时,我想在js中调用viewAllInventory()函数。

function viewAllInventory() {
$.ajax({
    url : "/GradleSpringMVC/inventory/viewAll",
    type : 'POST',
    dataType : 'json',
    data : JSON.stringify(populateViewAllParam()),
    contentType : 'application/json',
    mimeType : 'application/json'
}).done(
        function(response) {
            createInventoryTable(response);
        }).fail(function(error) {
    // parseToPageAlerts(error.responseText);
}).always(function() {
    // hideLoading()
});}

但是当我调试js文件时。它再次调用 js 中的就绪函数。不调用查看所有库存函数。

我在 js 中的就绪函数是

$(document).ready(function() {
$("body").off("click", "#btnAdd").on("click", "#btnAdd", doAdd);
$("body").off("click", "#btnClear").on("click", "#btnClear", doClearAll);
$("body").off("click", "#btnSearch").on("click", "#btnSearch", doSearch);
$("body").off("click", "#btnDelete").on("click", "#btnDelete", deleteRow);
$("body").off("click", "#btnViewAll").on("click", "#btnViewAll", viewAllInventory);
 });

所有的ajax调用都运行良好,我想正确工作这一行

$("body").off("click", "#btnViewAll").on("click", "#btnViewAll", viewAllInventory);

谁能给我一个想法,为什么会这样?

我尝试了您的代码,它对我有用。我认为问题可能出在您的 html 中。

如果您在表单元素中有 btnViewAll 按钮,则每次单击按钮都会提交该表单,从而重新加载页面,因此请添加

$('form').submit(function(e){
    e.preventDefault();
});

在你的

$(document).ready(function() { 
......
......
}

功能,以便您可以阻止表单提交。或者,如果您不执行任何表单提交(仅 ajax 类型 POSTing),那么您可以简单地删除表单元素。

我们可以通过将<button id="btnViewAll">View All</button>更改为 <button type="button" id="btnViewAll">View All</button> 来解决此问题。我们需要添加type="button"否则它被识别为提交按钮。