#jquery #ajax #jsp
#jquery #ajax #jsp
Вопрос:
файл index.jsp
// Вопрос в том, как скрыть автоматически заполняемое текстовое поле после выбора поля имени, но опция остается, так как вы можете видеть прикрепленный вывод ниже всего, что я правильно связал, например, jQuery, bootstrap. Пожалуйста, помогите мне с этим
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery Autocomplete from Database in JSP</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"
type="text/css">
</head>
<body>
<div class="container">
<h3 style="text-align: center; color: red;">Enter your name here</h3>
<hr>
<label>Enter Your Name</label>
<input type="text" name="name" id="txtCountry" class="form-control" placeholder="enter your name" aria-haspopup="true" role="textbox" autocomplete="off">
<div id="showList">
<ul class="list-group">
</ul>
</div>
</div>
<script src="js/jquery-1.12.4-jquery.min.js" type="text/javascript"></script>
<script src="bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#txtCountry').keyup(function() {
var search = $('#txtCountry').val();
if (search !== '' amp;amp; search !== null) {
$.ajax({
type : 'POST',
url : 'displayAllRecord.jsp',
data : 'name=' search,
success : function(data) {
$('#showList').html(data);
}
});
} else {
$('#showList').html('');
}
});
$(document).on('click', 'li', function() {
$('#txtCountry').val($(this).text());
});
});
</script>
</body>
</html>
Файл displayAllRecord.jsp
этот файл помогает нам извлекать данные из базы данных и отображает имя в поле текстового поля
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>display record</title>
</head>
<body>
<%
if (request.getParameter("name") != null) //get "key" variable from jquery amp; ajax part this line "data:'key=' search" and check not null
{
String key = request.getParameter("name"); //get "key" variable store in created new "key" variable
String wild = "%" key "%"; //remove "%" for use preparedstatement in query name like, and "key" variable store in "wild" variable for further use
String url = "jdbc:mysql://localhost/projectdb"; //database url string
String username = "root"; //datanase username
String password = "murad123"; //database password
try {
Class.forName("com.mysql.jdbc.Driver"); //load driver
Connection con = DriverManager.getConnection(url, username, password); //create connection
PreparedStatement pstmt = null; //create statement
pstmt = con.prepareStatement("SELECT * FROM student1 WHERE name LIKE ? "); //sql select query
pstmt.setString(1, wild); //above created "wild" variable set in this
ResultSet rs = pstmt.executeQuery(); //execute query and set in ResultSet object "rs".
while (rs.next()) {
%>
<li class="list-group-item"><%=rs.getString("name")%></li>
<%
}
con.close(); //close connection
} catch (Exception e) {
e.printStackTrace();
}
}
%>
</body>
</html>
вывод
Комментарии:
1. Привет, вам нужно скрыть весь этот список, то есть: добавьте этот lne
$('#showList').hide()
в свой$(document).on('click', 'li', function() {
, посмотрите, работает ли это.2. при добавлении этого $(‘#showList’).hide() он работает один раз, но если я снова обновлю страницу jsp, она вообще не заполняется, что делать??
3. да, вам нужно добавить
$('#showList').show()
внутри вашей функции успеха ajax, прежде чем добавлять данные внутри этого div.