页面中经常会遇见需要更新某个输入框,但是又不至于需要刷新整个页面的情况。这时候就需要使用ajax来做局部页面的更新。这二天刚好写了一个这个功能,简单记录方便以后copy。
通过省份、运费模板以及重量的变化来计算运费的功能。
js的脚本如下:
jQuery("#showBtn").click(function(){ if(jQuery("#state").valid() && jQuery("#weight").valid()){ $.ajax({ url:"${orderPath}${rc.contextPath}/express/freight.html", data:{templateId:jQuery("input[name=expessCompany]:checked").val(),weight:jQuery("#weight").val(),stateid:jQuery("#state").val()}, dataType:"json", success:function(json){ if(json.result){ jQuery("#preview").html(json.message).show(); } } }) } }) })
action脚本,返回json字符串:
@ResponseBody
@RequestMapping(value = "/freight")
public void getExpressPrice(String templateId, String weight,
String stateid,
HttpServletRequest request, PrintWriter out) throws Exception {
Long itemweight =0L;
try{
itemweight = Math.round(Double.valueOf(weight)*1000);
}catch(Exception e){
itemweight=0L;
}
Long templateIdInt =0l;
if("shentong".equals(templateId)){
templateIdInt = 65500l;
}else{
templateIdInt = 65501l;
}
stateid = stateid(stateid);
Long freight = expressAddressService.getExpressFreight(templateIdInt, itemweight, stateid);
JSONObject json=new JSONObject();
json.put("result", true);
json.put("message", (double)(Math.round(freight))/100.0+"元");
out.print(json);
out.close();
}