ajax能不能接收一个对象,Ajax与后端交互的几种形式小结(后端接收)

类型一:请求:key/value ,后端返回:text,方式:Get

前端:传输数据类型:key/value ,返回数据类型:text

后端:接收方式:形参名绑定key名获取数据,返回方式:@ResponseBody返回字符串

@RequestMapping(value = "/a",produces="application/json; charset=utf-8")//produces修正@responsebody返回乱码的问题

//前端 发送key/value

$.get({

url:"${pageContext.request.contextPath}/user/nameRepeat",

data:{"name":$("#username").val()},

dataType:"text", //返回的数据类型

success:function (data) {

if(data.toString()=="pass"){

$("#nameError")[0].innerHTML='用户名可用';

$("#nameError").css({"color":"green"});

}else {

$("#nameError")[0].innerHTML = "用户名重复,请重新输入";

$("#nameError").css({"color":"red"});

}

}

})

//后端 形参绑定 + 返回字串

@RequestMapping("/nameRepeat")

@ResponseBody

public String isNameRepeat(String name){

logger.info("检查用户名是否重复");

boolean isRepeat = userService.UsernameIsRepeat(name);

if(isRepeat){

logger.info("用户名已存在");

return "";

} else {

logger.info("用户名可用");

return "pass";

}

}

复制代码

类型二:请求:JSON,后端返回text,方式:POST

后端用实体类接收,前端必须使用 json字符串传输,否则后端实体类无法绑定

前端:传输数据类型:JSON字符串;使用js对象封装数据,使用JSON.stringify(user)将用户名转为JSON字符串。

附:JSON.parse()可以将 JSON字符串转为一个对象 JSON.stringify() JSON对象转为JSON字符串

后端:接收方式:实体类接收(需使用@RequestBody绑定),返回类型:字串

//前端 发送json

var jsonUser=JSON.stringify(user);//js对象转为json

$.post({

url:"${pageContext.request.contextPath}/user/userLogin",

data:jsonUser,//json格式

contentType: "application/json;charset=UTF-8",//发送json需要定义

dataType:"text",//返回数据类型

success:function(data){

if(data=='pass'){

location.href="${pageContext.request.contextPath}/book/index";

}else {

alert('请输入正确的用户名或密码');

}

}

})

//后端 实体类接收 返回字符串

@RequestMapping("/userLogin")

@ResponseBody

public String userLogin(@RequestBody user user, HttpServletRequest request){..}

复制代码

类型三:请求:key/value,后端返回json,方式GET

遇到:ajax发送key/value传递查询范围,controller使用map接收,但是map会自动将integer类型的页码转为String类型导致查询失败,所以需要进行String转integer强转

前端:发送key/value数据

后端:map接收 *map需要使用注解@RequestParam才能绑定。使用@ResponseBody将实体类转换为json字符串传输到前端。但是需要配置jackons依赖包且开启注解驱动

jackson-core jackson-databind jackson-annotations

//前端 发送key/value

$.getJSON("/book/allBook",{"startIndex":startIndex,"pageSize":pageSize},function (data){})

//后端 使用map接收

@RequestMapping("/allBook")

public @ResponseBody List AllBook(@RequestParam Map map){}

复制代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值