我的乖乖,使用ajax传值后台接收不到!

情况:在利用ajax传值时,阿红遇到的情况如下,在设置jsp的ajax请求方式为:

<script>$("#btn1").click(function (){let url = "${pageContext.request.contextPath}/user/getAjaxInfo";$.ajax({type:'post',dataType:'json',url:url,data:{"id":23,"username":"王五"},contentType:'application/json;charset=utf-8',success: function (resp) {alert(JSON.stringify(resp));}})})
</script>

利用springMVC来接收参数:

  @ResponseBody@RequestMapping("/getAjaxInfo")public String ajax( @RequestParam("id") int id ,@RequestParam("username") String username){StringBuffer str = new StringBuffer();str.append(" id="+id).append("username="+username);System.out.println("------------"+str.toString());return str.toString();}

后台出现错误:

利用浏览器查看请求信息:

出现问题的原因:

出现这个请求无效说明请求没有进入后台服务器里,也就是我们值没有传到后台中。在我百思不得其解,是了几遍有几遍,问题还是没有解决。

问题分析:

  1. 表示服务器接收的数据类型为json
dataType:'json',
  1. 表示数据请求服务器的数据格式
contentType:'application/json;charset=utf-8',

contentType: "application/json”,首先明确一点,这也是一种文本类型(和text/json一样),表示json格式的字符串,如果ajax中设置为该类型,则发送的json对象必须要使用JSON.stringify进行序列化成字符串才能和设定的这个类型匹配。

而自己在后台接收参数直接用@RequestParam来接收,

@RequestParam("id") int id ,@RequestParam("username") String username

传递过来的并不是简单参数,而是一个json对象。所以我们必须要使用@RequestBody来注解来接收。

@RequestBody作用:主要用来解析前端传递给后端json字符串中的数据的

但我们想拿到每个参数的对应值,此时可以采用Map<String,String>接收

@RequestMapping(value = "/Login",method = {RequestMethod.POST})public @ResponseBody Boolean Login(@RequestBody Map<String,String> map) {//此时map.get("id" 23)就是前端的idSystem.out.println(map.get("id"));//map.get("username" wangwu)就是前端的usernameSystem.out.println(map.get( "username"));

或者利用application/x-www-form-urlencoded的默认值(从前台删除即可)

后台接收:

    @ResponseBody@RequestMapping("/getAjaxInfo")public String ajax( @RequestParam("id") int id ,@RequestParam("username") String username){StringBuffer str = new StringBuffer();str.append(" id="+id).append("username="+username);System.out.println("------------"+str.toString());return str.toString();}

2.application/x-www-form-urlencoded 和 application/json 两种类型的数据在后端如何接收并解析?
application/x-www-form-urlencoded 这种类型的参数提交方式有get和post两种,这两种方式的区别是前者把编码后的user=username&pass=password这种形式的参数放在url上进行提交,后者是放在请求报文的请求体部分进行发送,只是发送数据时数据放的位置不一样。服务端收到 user=username&pass=password 这种形式的参数后,原生的Servlet使用request.getParameter(“user”)的这种形式即可获取参数,spring mvc 中 框架可自动根据参数名进行匹配,即表单元素的name属性和接收参数的名称一样时即可自动匹配,如果不一样,还可以使用@RequestParam的方式匹配。

application/json 字符串数据原生的Servlet中可以使用request.getParameterMap()来获取,但需注意,这种只能获取Get方式传入的数据。post传入的需要使用输入流的方式来读取。在spring mvc中通过@RequestBody来解析并绑定json字符串参数到方法入参。

我的乖乖,ajax传值后台接收不到相关推荐

  1. ajax传值 vue_SpringMVC(五):Ajax传值与接收值

    1.Json包fastjson和Jackson //TODO jackson core asl 和 jackson mapper asl的区别,作用 2.spring mvc接收简单数据 2.1.接收 ...

  2. struts获取ajax传值,struts 接收 jquery带参数ajax请求

    $("input[name=#delete]").click(function(e) { var productTypeId = parseInt($(this).parent() ...

  3. 前端传值后端接收不到_关于前端传参数,后台接收的问题

    1.通过ajax,示例: 传给后台的数据通过json封装起来,再用ajax将json传到后台,ajax是用到Jquery的ajax,在jsp先加入Jquery的引用 js传值的方法如下 functio ...

  4. asp .net mvc ajax 传值到后台,并放回JSon值解析

    什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...

  5. 在layui中使用ajax传值给后台,解决layui批量传值到后台操作时出现传值为空的问题...

    如图,前台的样子,data的参数为 [ {"good_id":1,"good_name":"标样-总磷","good_num&qu ...

  6. ajax返回实体类字符串,js使用ajax传值给后台,后台返回字符串处理方法

    之前使用js获取后台生成的JSON字符串,然后给select填充值,这次需要重新获取一次. 这里的目标是,在一个input输入框里,输入一个用户名,判断是否为空,是否不存在,如果存在返回几个字段给前台 ...

  7. ajax传值从前台到后台乱码,jquery ajax传值,get方式后台中文乱码

    经过jquery ajax传值,后台出现中文乱码,通过一番摸索后发现原来客户端浏览器经过get方式传递到项目后台时,编码格式是ISO-8859-1,须要咱们在后台通过转码才能正常使用.方法以下:jav ...

  8. ajax传递数组后台接收不到值的问题

    背景: JQGrid需要进行批量删除操作传给后台的是数组,结果后台接收不到值. 后台语言:java 原因: ajax传递参数时,traditional 默认为false,JQuery会深度序列化参数对 ...

  9. ajax传值到ashx接收反序列

    //jsonData 格式// [{"PersonID":1,"Name":"Bryon Hetrick","Registered ...

  10. js ajax java传参_ajax参数传递与后台接收

    @ ajax参数传递与后台接收 Servlet中读取http参数的方法 Enumeration getParameterNames() 返回一个 String 对象的枚举,包含在该请求中包含的参数的名 ...

最新文章

  1. 基于 eBPF 的新型追踪工具:bpftrace
  2. Java设计模式--总结
  3. java 字符串 面试_Java 字符串面试题
  4. 安卓手机python开发环境_「学习」人工智能开发宝典:第四讲 Python开发环境安装(一)...
  5. 研究生第一篇学术论文常犯问题总结
  6. Java基础夺命连环16问
  7. Linux工作笔记036---Centos下查看cpu、磁盘、内存使用情况以及如何清理内存
  8. 以算法岗为例:我最想对入职前的自己说些什么?
  9. c++ 定时器_「正点原子Linux连载」第十九章定时器按键消抖实验
  10. 一元函数积分学基本计算例题
  11. 亚商投资顾问 早餐FM/0913
  12. 手机wifi已连接但无法访问互联网_我们的手机WiFi出现“已连接但无法上网”时咋办?...
  13. Problem_1 小鸡啄米
  14. adb命令 激活并设置默认输入法
  15. 全面演示springboot发送QQ邮件过程(复杂邮件+简单邮件)图片、附件
  16. PPT插入幻灯片编号却没有出现页码的解决方法
  17. 《Java SE实战指南》10-01:特性修饰符概述
  18. H3C课程笔记(网上看视频记的)
  19. java-堆里面的分区:Eden,survival(from) to,老年代,各自的特点。
  20. 打不开计算机 在任务栏里显示,电脑下方的任务栏不显示怎么办 电脑任务栏不显示解决方法【图文】...

热门文章

  1. 怎样写好git comment
  2. 电脑桌面运维工程师考证
  3. 机器学习入门:Kaggle -titanic(泰坦尼克)生存预测
  4. 程序计数器的作用--简单易懂
  5. xpath之根据节点获取兄弟节点
  6. 解决百度推送not_same_site的问题
  7. MacOS之连接蓝牙音箱卡顿解决方案(六)
  8. 熵值法的python实现方法
  9. 网页打开QQ链接,进行临时会话
  10. 在多台终端设备的i茅台应用中,实现同时自动化预约X酒的解决方案