У меня есть данные с несколькими фильмами (строками), в конце каждой строки есть пользовательский столбец для удаления.
Вот мой источник данных:
HTML
<table id="moviesTable1" class="table table-striped table-bordered">
<thead>
<tr>
<th>Title</th>
<th>Duration</th>
<th>Distributor</th>
<th>Origin country</th>
<th>Year of production</th>
<th></th>
</tr>
</thead>
<tbody id="moviesTbody">
</tbody>
</table>
jquery (у меня также есть добавление mov ie, getAll, который отлично работает)
var MoviesManager = {
getAll : function() {
$.get('MoviesServlet', function(data) {
$('#moviesTable1').DataTable({
"paging": false,
"info": false,
"searching": false,
"columns": [
null,
null,
null,
null,
null,
{
"data": null,
render:function(data, type, row)
{
return '<button id="deleteMovie">Delete</button>'
},
"targets": -1
}
]
});
for(m in data.movies) {
$('#moviesTable1').dataTable().fnAddData ([
data.movies[m].title,
data.movies[m].duration,
data.movies[m].distributor,
data.movies[m].originCountry,
data.movies[m].yearOfProduction
]);
}
});
},
deleteMovie : function() {
var rowSelector = $(this).closest('tr');
var id = $('#moviesTable1').dataTable().row(rowSelector).data().id;
params = {
'action': 'delete',
'id': id
}
$.post('MoviesServlet', params, function(data){
console.log(data);
});
}
}
$(document).ready(function() {
MoviesManager.getAll();
$('#deleteMovie').click(function(e) {
MoviesManager.deleteMovie();
});
});
Я пытаюсь получить идентификатор из выбранной строки (идентификатор в базе данных) и отправить это сервлет. У меня ничего не получается при нажатии.
Вот сервлет, который получает идентификатор
public class MoviesServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Movie> movies = MovieDAO.getAll();
Map<String, Object> data = new HashMap<>();
data.put("movies", movies);
ObjectMapper mapper = new ObjectMapper();
String jsonData = mapper.writeValueAsString(data);
response.setContentType("application/json");
response.getWriter().write(jsonData);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
try {
switch(action) {
case "add": {
String title = request.getParameter("title");
String duration = request.getParameter("duration");
String distributor = request.getParameter("distributor");
String originCountry = request.getParameter("originCountry");
String yearOfProduction = request.getParameter("yearOfProduction");
Movie movie = new Movie();
movie.setTitle(title);
movie.setDuration(duration);
movie.setDistributor(distributor);
movie.setOriginCountry(originCountry);
movie.setYearOfProduction(Integer.parseInt(yearOfProduction));
MovieDAO.addMovie(movie);
break;
}
case "delete": {
Integer id = Integer.parseInt(request.getParameter("id"));
MovieDAO.delete(id);
break;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
и, наконец, DAO, который выполняет SQL запрос
public static boolean delete(Integer id) {
Connection con = ConnectionManager.getConnection();
PreparedStatement ps = null;
try {
String query = "DELETE FROM movies WHERE id = ?";
ps = con.prepareStatement(query);
ps.setInt(1, id);
return ps.executeUpdate() == 1;
}catch (Exception ex){
ex.printStackTrace();
}finally {
try {ps.close();} catch (Exception ex1) {ex1.printStackTrace();}
try {con.close();} catch (Exception ex1) {ex1.printStackTrace();}
}
return false;
}