脉络 : html + DOM + jquery + ajax + json + servlet + mysql
解决问题 : 从数据中读取多条数据,前台修改后,仅将修改的项提交给数据库;
其他说明 :
- 前端通过json发送一个array数组,数组的元素是item对象;
- 后端通过servlet中jsonarrayl.getJSONObject(i)实现获取元素;
- 注;部分代码可以忽略,该运用场景是:将前端有改动的数据,发送给后端,重写数据库
- 针对前端改动元素(对象)的属性的获取,用了DOM相关知识点;
涉及的面有点多,这次侧重从jsonarray方面的实现来记录:
一. 前台html部分
<!-- 这是一个动态插入表单元素的表格 -->
<div>
<table>
thead><tr><td colspan="6">编辑产品</td></tr></thead>
<tbody id="tbAdd"></tbody>
<tfoot><tr><td colspan="6"><input type="button" id="submit" value="提 交"></td></tr></tfoot>
</table>
</div>
二. js部分
function uploadSubmit() {
$("#submit").click(function() {
var arr = new Array(); // 用于装入元素对象item
var label = $("#tbAdd span").find("input[testChange='true']");
$.each(label, function(i) { // 遍历
var item = new Object();
item.pvValue = label[i].value;
item.pvid = label[i].getAttribute("pvid"); ;
arr.push(item); // 装入
});
var urls = "../admin_product_updatePropertyValue";
$.post(urls, {"data" : JSON.stringify(arr)}, function() {
// ....
alert("提交成功!");
})
})
}
三. servlet部分
public String updatePropertyValue(HttpServletRequest request, HttpServletResponse response, Page page) {
String data = request.getParameter("data");
JSONArray jsonArray = JSONArray.fromObject(data);
// 遍历,写回数据库;
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject json = jsonArray.getJSONObject(i);
PropertyValue bean = propertyValueDAO.get(json.getInt("pvid"));
bean.setValue(json.getString("pvValue"));
propertyValueDAO.update(bean);
}
return "stop"; // 不做跳转
}