我正在尝试将JSON对象/数组从JSP返回到JavaScript。我不知道如何在JS中导入JSP文件。我用DB值填充了JSON数组。
main.js:
$(document).ready(function() {
$(function() {
$("#search").autocomplete({
source : function(request, response) {
$.ajax({
url : "operation.jsp",
type : "GET",
data : {
term : request.term
},
dataType : "json",
success : function(data) {
response(data);
}
});
}
});
});
Operation.jsp :
try{
Class.forName(driverName);
connection = DriverManager.getConnection(connectionUrl, userId, password);
System.out.println("Connection Success");
statement = connection.createStatement();
String sql = "SELECT * FROM sample";
resultSet = statement.executeQuery(sql);
JSONArray array = new JSONArray();
JSONObject object = new JSONObject();
while (resultSet.next()) {
System.out.println(resultSet.getString("Name"));
System.out.println(resultSet.getString("Age"));
object.put("Name", resultSet.getString("Name"));
object.put("Age", resultSet.getString("Age"));
array.put(object);
}
System.out.println("The Array is" + array);
response.setContentType("application/json");
response.getWriter().write(array.toString());
} catch (Exception e) {
e.printStackTrace();
}
我需要在HTML下拉框中填充返回的JSON数据。
答案 0 :(得分:0)
您的jsp正在创建一个json数组,但问题在于将该数据发送到Ajax调用。 我想建议一些事情要做:
1。添加作家flush
& JSP中的close
语句。
response.getWriter().write(array.toString());
response.getWriter().flush();
response.getWriter().close();`
2. :设置JSP页面的contentType如下:
<%@page contentType="application/json; charset=UTF-8"%>
3. 如果未调用JSP(syso does not prints anything
),请检查url : "operation.jsp"
的相对路径。
在您的网络应用中,它可以像/operation.jsp
一样
使用servlet而不是JSP,因为你只在JSP中编写java代码
如果是servlet,则网址为url : 'operation'
operation
是servlet的url。
答案 1 :(得分:0)
尝试按如下方式更改JSON密钥:
object.put("label", resultSet.getString("Name"));
object.put("value", resultSet.getString("Age"));
因为,根据documentation:
标签属性显示在建议菜单中。 值会 当用户选择项目时插入到input元素中。