我正在向 servlet 发送 ajax POST,它返回一个数组。该调用是在 onchange 事件上触发的。我第一次收到正确的数据。但从那时起,数据不断增加。
例如,第一次 onchange 事件发生时,收到的数组包含 [10,11],这是正确的。
第二次发生 onchange 事件,但收到的数组包含 [10,11,12,13],而它本来应该是 [12,13]。第三个更改事件将是更长的数据集。
我尝试使用缓存:错误和相同的结果。请指教。
$('#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));
}
最佳答案
这行就在这里private ArrayList<String> tempArr = new ArrayList<String>();
它在请求之间持续存在。放进去doPost
。理想情况下,Servlet 应该是无状态的,以防止出现此类错误。
关于java - 每次更改事件后发布结果都会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213474/