json和ajax之间数据的传递与springmvc视图解析器之间的关联

ajax请求不能被中途转发到别的界面,request.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(request, response);不行

拦截器的拦截转发也不行,都不会跳转到该页面,在发出ajax请求的页面会接收到一个错误,因为ajax是不会跳转的,当你后面的控制器要发生跳转的适合,便会出现错误返回给界面。

 

 

 

$.ajax({
url:"${pageContext.request.contextPath}/userRegister",
type:"post",
data:JSON.stringify
(
{"username":username,
"password":password,
"registerDate":registerDate
}
),
contentType:"application/json;charset=UTF-8",//表示发送的时候是以json格式发送过去的,url方可以用@RequestBody User user   //这个注解来接受request发送过来的对象,json的jar官方jar会自动为你解析出来,//当然你这边要是用字符串接收的话,接收到的便是一个json格式的字符串{“key”,value},类似如此,重点是返回数据到前端时的注意事项

/*  dataType:"json", */  
success:function(data)
{
    /* alert("ajax返回成功"); */
if(data!=null)
{
alert("用户名"+data);
}
}

}); 

返回时:

@Controller
public class UserController {
    UserService userService=new UserServiceImpl();
    @RequestMapping(value="/userRegister")
    @ResponseBody
    public String  registerUser(@RequestBody User user,HttpServletRequest request,HttpServletResponse response)
    {
    
        HttpSession httpSession=request.getSession();
        System.out.println(user.getUsername());
        System.out.println(user.getPassword());
        System.out.println(user.getRegisterDate());
        System.out.println("hello ");
        return user.getUsername();//ajax请求的返回结果得加上   @ResponseBody这个注解标签,不然这个字符串便会被springmvc的视图解析器解析成该字符串所代表的网页,并返回该网页的内容作为该ajax请求的数据结果,并不会跳转到该字符串所代表的网页,而且大多数也不必要跳转,因为ajax请求的初衷本来就是局部更新跳转的话便失去了该意义,ajax请求相当于多线程的理解,当你返回的是对象时,ajax请求那边便可以申明  /*  dataType:"json", */   这样申明返回的类型为json类型,jar包会自动为你解析,当你返回的是字符串的时候,你就得把/*  dataType:"json", */  这个注释掉了,因为它解析不了字符串为json对象,这样得话便会出现错误,ajax的交互错误
    }
    
    
    
    @RequestMapping(value="/userSearch")
    @ResponseBody
    public List search(@RequestBody String context)
    {
        System.out.println(context);
        JSONObject jsonObject = new JSONObject(context);
        String str=jsonObject.getString("context");
        System.out.println("传的参 "+str);
        List<String> list=new ArrayList<String>();
        list=userService.userFind(str);
        for(String str1:list)
            System.out.println(str1);
        return list;
    }
}

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值