使用jsp和scriplets自动完成(不使用Java类) [英] Autocomplete using jsp and scriplets(Not using java classes)
问题描述
我想进行自动完成,但不使用任何java方法.只需使用jsp,jquery,ajax和scriplets.是否有可能?请提出建议.
I want to make an autocomplete but not by using any java method. Just by using jsp, jquery, ajax and scriplets. Is it possible? Please suggest.
我尝试使用下面给出的代码,但出现错误
I tried using the code given below, but am getting error
未捕获的错误:无法在初始化之前以自动完成方式调用方法;尝试调用方法"List.jsp"
Uncaught Error: cannot call methods on autocomplete prior to initialization; attempted to call method 'List.jsp'
代码如下:
//(Index.jsp)
//(Index.jsp)
<html>
<head>
<script src = "https://code.jquery.com/jquery-1.10.2.js"></script>
<script src = "https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$(document).ready(function() {
$('#country').focusin(function() {
$("#country").autocomplete("List.jsp");
});
});
</script>
</head>
<body>
<br><br><center>
<font face="verdana" size="2">
<font size="4">Java(jsp)/jQuery Autocompleter Example</font>
<br><br><br><br>
Select Country :
<input type="text" id="country" name="country"/>
</font>
</body>
</html>
//(List.jsp)
//(List.jsp)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%
try {
String s[] = null;
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver found");
String url = "jdbc:mysql://localhost:protNum/dbName";
String user = "";
String pass = "";
System.out.println("Connected....");
Connection con = (Connection) DriverManager.getConnection(url, user, pass);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from tbctry");
List li = new ArrayList();
while (rs.next()) {
li.add(rs.getString(1));
}
String[] str = new String[li.size()];
Iterator it = li.iterator();
int i = 0;
while (it.hasNext()) {
String p = (String) it.next();
str[i] = p;
i++;
}
//jQuery related start
String query = (String) request.getParameter("q");
int cnt = 1;
for (int j = 0; j < str.length; j++) {
if (str[j].toUpperCase().startsWith(query.toUpperCase())) {
out.print(str[j] + "\n");
if (cnt >= 5)// 5=How many results have to show while we are typing(auto suggestions)
{
break;
}
cnt++;
}
}
//jQuery related end
rs.close();
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
我希望文本框在keydown时自动填充数据库中的值.我已经使用Spring MVC做到了这一点,但是如果不使用任何Java类,而只是使用jsp,jquery,ajax和scriplets,就无法获得如何执行此操作的任何线索.请帮忙!
I want the textbox to autopopulate values from database on keydown. I have done this using spring MVC, but I'm not getting any clue how to do this without using any java class but by just using jsp, jquery, ajax, and scriplets. Please help!
推荐答案
您可以通过使用jquery onkeyup
事件来做到这一点,当用户开始在输入框中输入内容时,键入的值将传递给您的jquery
函数,并通过ajax,您可以调用List.jsp
页面并使用request.getParameter("")
获取该值,最后在查询中传递该值,然后使用out.print
返回结果,如下所示:
You can do that by using jquery onkeyup
event ,when user start typing in input box the typed value will passed to your jquery
function and by using ajax you can call your List.jsp
page and get that value using request.getParameter("")
,lastly passed that value in your query and return result back using out.print
like below :
输入,即:将在其中键入值的位置:
Input i.e :where value will be typed :
Select Country : <input type="text" id="country" name="country"/>
//here result will be display
<div id="result"></div>
jQuery& Ajax :
<script>
$('#country').keyup(function(){
//getting typed value
var searchid=$(this).val();
if(searchid!='')
{
$.ajax({
type:"POST",
url:"List.jsp",
//passing value
data:{search:searchid},
success:function(html){
//response from List.jsp page will come here
$('#result').html(html);
}
});
}
});
</script>
List.jsp页面:
//getting value passed from ajax
String search = (String) request.getParameter("search");
//db setting
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver found");
String url = "jdbc:mysql://localhost:protNum/dbName";
String user = "";
String pass = "";
System.out.println("Connected....");
Connection con = (Connection) DriverManager.getConnection(url, user, pass);
//below columnanme is fieldname from where you need to compare your search value.
PreparedStatement pstmt = con.prepareStatement(
"select * from tbctry where columnname LIKE ?");
pstmt.setString(1, search + "%");
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
//here you need to print values which you need to show in div
out.print("something");
}
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
希望这会有所帮助!
这篇关于使用jsp和scriplets自动完成(不使用Java类)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!