使用JQuery和JSON的Servlet的AJAX不会填充下拉列表

时间:2014-12-11 00:35:53

标签: jquery ajax jsp servlets

我正在使用带有JQuery和JSON的Servlet的AJAX。但不知何故它运行不正常。

用户从“字段”下拉列表中选择一个选项,选项id将被发送到servlet,该servlet从数据库中获取所需数据并将其发送回jsp页面。 AJAX函数应该填充“子”下拉列表,但它不会。

我在我的servlet中编写了一个简单的System.out.println ...我发现使用Ajax代码从我的JSP调用servlet并构建所需的JSONObject,但是servlet在响应中发送的数据确实不填充下拉列表(id =“sub”)。

JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type"
  content="text/html; charset=windows-1255">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="main.css">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function(){
$('#fields').change(function(event){
    var $f = $('option:selected').val();
    $.get('subfields.do',{field:$f}, function(responseJson){
        var $sub = $('#sub');
        $sub.find('option').remove();
        $.each(responseJson, function(key, value){
        $('<option>').val(key).text(value).appendTo($sub);   
        });
    });
});
});
</script>
</head>
<body>
<div id="container2">
        <div id="col1">
            <select id="fields">
                <c:forEach var="field" items="${info.fields}">
                    <option value="${field.key}">${field.value}</option>
                </c:forEach>
            </select> 
            <select id="sub">
                <option>Select Field</option>
            </select>
       </div>
    </div>
</body>
</html>

Web.xml中:

<servlet>
<servlet-name>subfields</servlet-name>
<servlet-class>com.Subfields</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>subfields</servlet-name>
<url-pattern>/subfields.do</url-pattern>
</servlet-mapping> 

Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
    request.setCharacterEncoding("utf-8");
    response.setContentType("application/json");
    String field = request.getParameter("field");
    System.out.println("field is " + field);
    PrintWriter out = response.getWriter();
    JSONArray arr = new JSONArray();
    JSONObject ob = new JSONObject();
    try {
        conn = DBConnection.getConnection();
        st = conn.createStatement();
        rs = st.executeQuery("SELECT ID, SUBDISCIPLINE_NAME FROM SUBDISCIPLINE WHERE DISCIPLINE_ID =" + field);
        while(rs.next()){
            try {
                ob = new JSONObject();
                ob.put("id", rs.getInt(1));
                ob.put("name", rs.getString(2));
                System.out.println("ob is " + ob);
                arr.put(ob.toString());
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       
        }
        out.print(arr);
    } catch (NamingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally{
            try {
                if(conn!=null) conn.close();
                if(st!=null) st.close();
                if(rs!=null) rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }

}

我做错了什么?

0 个答案:

没有答案