繁体   English   中英

如何将ajax响应作为javascript数组返回

[英]how to return the ajax response as an array of javascript

我正在学习如何使用jQuery自动完成功能,并在ajax中创建有关$ .get方法的示例。 我看一下http://jqueryui.com/autocomplete/做这个例子。

在我的jsp页面中:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>AJAX calls using Jquery in Servlet</title>
<link rel="stylesheet" href="jquery-ui.css" />
<script src="jquery-1.9.1.js"></script>
<script src="jquery-ui.js"></script>
<script>
$(function(){
    $('#user').autocomplete({       
        source: function (request, response) {
            var username = $('#user').val();
            $.get('autocompleteServlet', {user : username}, function(responseText){
                $('#welcometext').text(responseText);
                var value = [responseText];
                response(value);
            });
        }
    });
});
</script>
</head>
<body>
    <form id="form1">
        <h1>AJAX Demo using Jquery in JSP and Servlet</h1>
        Enter your Name: <input type="text" id="user" /> <input type="button"
            id="submit" value="Ajax Submit" /> <br />
        <div id="welcometext"></div>
    </form>
</body>
</html>

在servlet中:

@Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        String value = request.getParameter("user");
        System.out.println("user : "+ value);

        try {
            Connection cnn = XJdbc.getConnection();
            String sql = "SELECT Name FROM reported_tasks WHERE Name LIKE '%"+ value + "%'";
            Statement stm = cnn.createStatement();
            ResultSet rs = stm.executeQuery(sql);
            String result = "";
            while (rs.next()) {
                result = result + rs.getString("Name") + ",";
            }
            cnn.close();
            System.out.println("Request :" + result);
            response.setContentType("text/plain");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().print(result);
        } catch (Exception e) {
            System.out.println("Error : " + e.getMessage());
        }

    }

我认为问题在于如何将Ajax响应作为JavaScript的数组类型返回。 请帮助我解决该问题,谢谢大家

您的servlet的响应当前将产生如下内容:

name1,name2,name3,...

尽管您可以使用其他格式的对象数组,但response函数正在您的情况下寻找字符串数组。

我建议您的servlet输出如下所示:

{ "names" : ["name1","name2","name3"...,"nameX"] }

您用于处理上述响应的Javascript将是

        $.get('autocompleteServlet', {user : username}, function(responseText){
            // I assume the next line is for debugging? 
            $('#welcometext').text(responseText);                 
            var obj = $.parseJSON(responseText); 
            response(obj.names);
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM