前段时间做了一个任务,为了在商城搜索页面给商品的显示顺序做排序,要给商品加上相对应的权值,跳到权重页面,首先需要查出来所有的已经绑定权重值的商品列表,显示出权重值,有效日期以及是否有效等状态,(楼主用的是datatable,其实可以用handlebar来处理,会使页面数据显示更美观,样式更容易更改,但是由于时间紧迫,就没改)跑题了,页面上有一个按钮,点击时可以查找出所有的没有绑定权值的商品列表,每个商品前面有checkbox来提供选择,选中后点确定就会把选中的商品添加到权重列表之中,权重值和有效期为空,需手动添加,添加完毕之后,需要把所有的商品数据传到后台去,然后做更新或是保存处理。由于楼主经验不足,就在传输数据这块儿卡住很长时间。。。最开始想到的是在后台用HttpRequest request来获取页面上的每一个单品值,但是这样需要给每一个单品设定标识来获取对象值,而且麻烦繁琐,pass,然后博主想到可否将前台的列表封装到一个数组里面,然后将数组传到后台,然后将数组循环解析然后插到数据库里面,但是保存时我用的是ajax来保存的,所以需要将封装的数组转化为字符串,然后将字符串传到后台,再将字符串解析为数组对象,在解析数组。下面是代码:
1.首先将页面上的所有数据封装到数组里面
var searchWeightFormList=[];
$('#datatable tr').each(function(){
var value =$(this).find('[name="weightValue"]').val();
var weightTypeId =$(this).find('[name="weightValue"]').attr('weightTypeIds');
var beginDatetime =$(this).find('[name="beginDatetime"]').val();
var endDatetime =$(this).find('[name="endDatetime"]').val();
if(typeof(value) !="undefined"&&typeof(weightTypeId) !="undefined"&&typeof(beginDatetime) !="undefined"&&typeof(endDatetime) !="undefined"){
searchWeightForm={
weightValue:value,
weightTypeId:weightTypeId,
beginDatetime:beginDatetime,
endDatetime:endDatetime
};
searchWeightFormList.push(searchWeightForm);
}
});
2.ajax传输数据
callService('/XXX/XXXXXXX.ajax',{searchFormJson:JSON.stringify(searchWeightFormList)}, {
callSuccess : function(data) {
if (data != null) {
$.dm.jumpTo("/XXX/XXXXXXX.jhtml");
}else{
jsAlert(“保存失败”);
}
}
})
注:此处使用到了JSON.stringify()的方法,将一个form的数组转化为字符串
3.后台获取数据并且解析数组
/**
* 保存权重列表
*
* @return
*/
@ResponseBody
@RequestMapping(value = "/XXXXXX.ajax", method = { RequestMethod.POST })
public Boolean toSaveSearchWeightAdSetList(String searchFormJson) {
SearchWeightForm[] searchWeightFormList = JSON.parseObject(searchFormJson, SearchWeightForm[].class);
List<SearchWeightVo> searchWeightVoList = new ArrayList<SearchWeightVo>();
for (SearchWeightForm searchWeightForm : searchWeightFormList) {
SearchWeightVo searchWeightVo = (SearchWeightVo) BeanUtil.copy(searchWeightForm, SearchWeightVo.class);
searchWeightVo.setModifyUser(SystemConstant.SYSTEM_USER);
searchWeightVoList.add(searchWeightVo);
}
Long result = adminSearchWeightModel.toSaveSearchWeightAdSetList(searchWeightVoList);
if (result > 0) {
return true;
}
return false;
}
注:此处使用了JSON.parseObject()的方法,将一个字符串转换为一个对象。
这个方法也许对于大佬们算是小菜一碟,但是博主完成之后还是稍感欣慰的。所以要更加努力,每学会一点点就在博客上做点记录,积少成多,加油。