gpt4 book ai didi

javascript - 当我点击删除链接时,我的 Ajax 功能不起作用,但适用于编辑链接

转载 作者:太空宇宙 更新时间:2023-11-04 15:37:08 25 4
gpt4 key购买 nike

下面是我的 home.jsp 页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>welcome</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>
<body onload="load();">
<input type="hidden" id="empId">
Name: <input type="text" id="emp_name" required="required" name="empName"><br>
Address: <input type="text" id="emp_address" required="required" name="empAddress"><br>
Salary: <input type="text" id="emp_salary" required="required" name="empSalary"><br>
<button onclick="submit();">submit</button>
<table id="table" border="1">
<tr>
<th>Name</th>
<th>Address</th>
<th>Salary</th>
<th>edit</th>
<th>delete</th>
</tr>
</table>
</body>
<script type="text/javascript">
data = "";
load = function () {
$.ajax({
url: 'getlist',
type: 'get',
success: function (response) {
data = response.data;
$('.tr').remove();
for (i = 0; i < response.data.length; i++) {
$("#table").append("<tr class = 'tr'> <td>" + response.data[i].empName + "</td> <td>" + response.data[i].empAddress + "</td> <td>" + response.data[i].empSalary + "</td> <td><a href ='#' onclick = 'edit(" + i + ");'> edit </a> </td> <td> <a href ='#' onlclick = 'deleteEmp(" + response.data[i].empId + ");'> delete </a></td></tr>")
}
}
});
}
edit = function (index) {

//when we click on edit, those value should be available in our table fields.
$("#empId").val(data[index].empId);
$("#emp_name").val(data[index].empName);
$("#emp_address").val(data[index].empAddress);
$("#emp_salary").val(data[index].empSalary);
}
submit = function () {
$.ajax({
url: "saveOrUpdate",
method: "post",
data: {
empId: $("#empId").val(),
empName: $("#emp_name").val(),
empAddress: $("#emp_address").val(),
empSalary: $("#emp_salary").val()
},
success: function (response) {
alert(response.message);
load();
}
});
}
deleteEmp = function (Id) {
$.ajax({
url: 'delete',
method: 'put',
data: {empId: Id},
success: function (response) {
alert(response.message);
load();
}
});
}
</script>
</html>

想法是,当我单击删除链接时,它应该调用删除函数,然后该函数可以与 Spring Controller 类交互,但是它没有按预期工作。我还提供了按预期工作的编辑链接(与删除完全相同)。所以我真的很困惑并且无法调试问题。

需要帮助,因为我对这一切都很陌生并且自己学习。

最佳答案

删除链接的事件名称有拼写错误:onlclick .

但是,使用内联事件绑定(bind)并不是一个好的做法。试试这个:

var html = "";
for (i = 0; i < response.data.length; i++) {
html+= "<tr class = 'tr'> <td>" + response.data[i].empName + "</td> <td>" + response.data[i].empAddress + "</td> <td>" + response.data[i].empSalary + "</td> <td><a href ='#' class='edit-button'> edit </a> </td> <td> <a href ='#' class='delete-button' data-empid='" + response.data[i].empId + "'> delete </a></td></tr>";
}
$("#table").append(html);

在全局范围内:

$(document).ready(function() {
$("#table")
.on("click", ".delete-button", function() {
var empIp = $(this).data("empid");
deleteEmp(empId);
})
.on("click", ".edit-button", function() {
var index = $(this).closest("tr").index();
edit(index);
});
});

第一个代码片段将仅使用一个创建元素 append()调用,并且没有内联事件绑定(bind)。

最后一个代码段将点击事件绑定(bind)到您的表格,因此如果行是动态创建的,则不会出现问题,事件不会每次都创建。 删除事件使用数据属性来获取 empId edit 事件通过 tr 查找行索引索引。

关于javascript - 当我点击删除链接时,我的 Ajax 功能不起作用,但适用于编辑链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44247725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com