我正在使用带有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();
}
}
}
我做错了什么?