使用ajax向后台传递参数,使用参数绑定的方式笔记:
第一种,使用@RequestParam逐个对应接收:
js代码:
var url = "/rest/register"; var phoneNo = $("#mobile").val(); var nickname=$("#nickname").val(); var password = $("#signPwd").val(); var code = $('#mobileValidateCode').val(); //判断注册角色(默认为投资人角色) var role=2; var rs = null; $(".reg-items :input").attr("disabled", true); $.ajax({ data:({ "phoneNo" : phoneNo, "nickname" : nickname, "password" : password, "role" : role, "code":code, "spreadCode": $("#spreadCode").val() }), url:url, type:"POST", dataType:"json", cache : false, success:function(data){ } });
后台代码:
@RequestMapping(value = "register", method = RequestMethod.POST)
public CommonResult register(
@RequestParam("phoneNo") String phoneNo,
@RequestParam("nickname") String nickname,
@RequestParam("password") String password,
@RequestParam("role") int role, @RequestParam("code") String code,
@RequestParam(required = false, value="spreadCode") String spreadCode,
HttpServletRequest request)
此种方法使用起来简单直接,不宜出错,缺点也很明显,方法的参数列表过长。
第二种:使用@ModelAttribut进行参数绑定
html代码:
js代码:
$.ajax({ type:"POST", data:$('#ybdForm').serialize(), url:"/rest/applyLoan", cache : false, success:function(result){} });
java代码:
@RequestMapping(value="applyLoan",method=RequestMethod.POST)
public CommonResult
使用参数绑定,避免了后台重新初始化对象所带来的冗余代码,需要着重提醒的是:ApplyView接收对象中的属性名必须与form表单中需要提交的标签或其他标签的name属性完全对应
第三种:使用@RequestBody进行参数绑定(以传递数组为例)
js代码:
var waitRegistArray = []; $(":checkbox[name=checkboxBtn][checked=checked]").each(function(){ var regist = waitRegist[$(this).val()]; var data={"name":regist.name,"phoneNo":regist.phoneNo,"cardNo":regist.cardNo}; waitRegistArray.push(data); }); $.ajax({ url:"rest/batchRegist", data:JSON.stringify(waitRegistArray), contentType:"application/json", type:"POST", dataType:"json", async: false, cache:false, success:function(result){} })
java代码:
@RequestMapping(value="batchRegist",method=RequestMethod.POST)
public CommonResult batchRegist(@RequestBody List users){}
json数组以List集合方式接收,其中User对象属性与数组中的对象属性名对应!