我正在使用servlet构建一个Web应用程序。当用户点击某个按钮时
<a href="myServlet?do=createBox">BOX</a>
触发servlet:
String jspAction = request.getParameter("do");
else if(jspAction.equals("createBox")){
try{
ArrayList<Product> products = cdb.getProducts();
toJSON(products, "products.json");
}catch(Exception e){
System.err.println("Error getting products from DB: " + e);
}
RequestDispatcher disp = getServletContext().getRequestDispatcher("/box_create.jsp");
disp.forward(request, response);
}
cdb.getProducts();
询问DB(SQLite)并返回其大小为arrayList
products.size()
是2012年的元素。
然后toJSON
以JSON格式转换ArrayList。问题是当用户点击按钮时,下一页(box_create.jsp
)会自动重新加载。下一个jsp页面包含bootstrap css和JS以及另外一个处理JSON
box_create.jsp
<div class="col-md-3">
<input type="text" id="product" list="products" class="form-control"/>
<datalist id="products"></datalist>
</div>
JS for JSON
var dataList = document.getElementById('products');
var input = document.getElementById('product');
var request = new XMLHttpRequest();
request.onreadystatechange = function(response) {
if (request.readyState === 4) {
if (request.status === 200) {
// Parse the JSON
var jsonOptions = JSON.parse(request.responseText);
// Loop over the JSON array.
jsonOptions.forEach(function(item) {
var option = document.createElement('option');
option.value =item.productId;
option.text = item.description;
dataList.appendChild(option);
});
// Update the placeholder text.
input.placeholder = "Όνομα";
} else {
// An error occured :(
input.placeholder = "error :(";
}
}
};
// Update the placeholder text.
input.placeholder = "Loading options...";
// Set up and make the request.
request.open('GET', 'products.json', true);
request.send();
如果我删除了
ArrayList<Product> products = cdb.getProducts();
toJSON(products, "products.json");
页面不断重新加载.. 我不明白为什么会这样......
更新
我从jsp页面删除了所有JS
。它还在重装!!!
我使用Firefox运行该应用程序,但我没有重新加载..这似乎与Chrome一起发生......