我正在向一个servlet发一个ajax POST,它返回一个数组。该调用是在onchange事件上触发的。我第一次收到正确的数据。但从那时起,数据不断增加。
例如,第一次发生onchange事件并且接收的数组包含[10,11],这是正确的。
第二次onchange事件发生但接收到的数组包含[10,11,12,13],它应该只是[12,13]。 Thir change事件将是一组更长的数据。
我尝试使用cache:false和相同的结果。请指教。
$('#drivername1').on('change', function() {
$.post("statChartServlet", {driverName : this.value}, function(responseText) {
alert(responseText); //this is the array data that keeps increasing
});
});
的Servlet
private ArrayList<String> tempArr = new ArrayList<String>();
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String driverName = request.getParameter("driverName");
Connection conn = null;
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection(dbURL, dbUser, dbPass);
Statement statement = conn.createStatement();
ResultSet resultset =
statement.executeQuery("select racename from race WHERE drivername = '" + driverName + "'");
while(resultset.next()) {
tempArr.add(resultset.getString(1));
}
}catch (Exception e){
e.printStackTrace();
}
//response section
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
String[] strArr = tempArr.toArray(new String[tempArr.size()]);
PrintWriter out = response.getWriter();
out.write(Arrays.toString(strArr));
}
答案 0 :(得分:2)
此行private ArrayList<String> tempArr = new ArrayList<String>();
它在请求之间持续存在。把它放在doPost
里面。理想情况下,servlet应该是无状态的,以防止这样的错误。