将JSON对象从JSP返回到JS

时间:2017-11-08 09:52:46

标签: javascript jquery json ajax jsp

我正在尝试将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数据。

2 个答案:

答案 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元素中。