springMVC 中 ajax get 请求和 post 请求的坑以及参数传递
1, ajax 请求 无论为 post ,或者 get ,url中带有?形式的参数,后台都能以String类型变量接收,变量名称和参数名称必须一致
前台ajax:
$.ajax(
"productForm?loginname2=jichen",// 发送请求的URL字符串。
{
dataType : "JSON", // 预期服务器返回的数据类型。如果服务器返回不一致,报 parseError
type : "post" 或者 “get”, // 请求方式 POST或GET
contentType:"application/json;charset=UTF-8", // 发送信息至服务器时的内容编码类型
。。。
});
后台springMVC:
@RequestMapping(value="/productForm")
@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))
public String ProductPost(String loginname2){
(此处必须和前台传的参数名称一致)
System.out.println(loginname2);打印的值就是 jichen
}
2,ajax 请求 为 post , contentType 必须为 "application/json;charset=UTF-8",data 必须用 JSON.stringify 格式化: JSON.stringify({id : 1}),则后台可以用 Map 类型的@RequestBody Map data 来接收,缺一不可;
前台ajax:
$.ajax(
"productForm?loginname2=jichen",// 发送请求的URL字符串。
{
type : "post",
contentType:"application/json;charset=UTF-8", // 发送信息至服务器时的内容编码类型,如果不加 charset,则中文传到后台为乱码
// 发送到服务器的数据。
data:JSON.stringify({id : 1, loginname : "Spring MVC企业应用实战"})
}
后台springMVC:
@RequestMapping(value="/productForm")
@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))
public String ProductPost(String loginname2,@RequestBody Map data){
System.out.println(data.get("loginname"));打印出来 Spring MVC企业应用实战
}
3 ,ajax 请求 为 get,data 不能用 JSON.stringify 格式化: JSON.stringify({id : 1}),可以直接传一个对象:{id : 1},如果传的是一个对象,则相当于给 url 加?形式的参数 productForm?id=1 ,如果用 JSON.stringify 格式化,报错:
Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
还有,如果为 get 请求,则后台 springMVC 不能用 @RequestBody注解,因为http 1.1协议不支持,如果使用,报错:
Required request body is missing
前台ajax:
$.ajax("productForm?loginname=jichen",// 发送请求的URL字符串。
{
dataType : "JSON", // 预期服务器返回的数据类型。如果服务器返回不一致,报 parseError
type : "get",
// 发送到服务器的数据。
data:{id : 1, loginname : "Spring MVC企业应用实战",auto:123}
}
后台springMVC:
@RequestMapping(value="/productForm")
@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))
public String ProductPost(String loginname){
System.out.println(data.get("loginname"));打印出来 jichen,Spring MVC?????(使用?方式传参,中文为乱码)
}
4,如果把 3 的 type 改为 post,contentType 不能写 application/json (可直接省略,如果写成 application/json ,则data 对象传不到后台), data传的是对象{id : 1, loginname : "Spring MVC企业应用实战",auto:123},其它不变,则还是相当于给url带参,?id=1&auto=123.。。。,但是,传到后台的中文不是乱码,神奇!
5,后台接收前台传递的参数的方式
(1)直接用
后台springMVC:
@RequestMapping(value="/productForm")
@ResponseBody(这个注解意味着这个方法的返回值不是页面名称,而是同一次请求的返回体(也就是服务器返回给客户端的数据))
public String ProductPost(String loginname){
System.out.println(data.get("loginname"));打印出来 jichen,Spring MVC?????(使用?方式传参,中文为乱码)
}
springMVC 中 ajax get 请求和 post 请求的坑以及参数传递的更多相关文章
- 前端ajax中运用post请求和get请求之于session验证
首先我们来看下ajax两种请求的区别: Ajax中POST和GET的区别Get和Post都是向服务器发送的一种请求,只是发送机制不同. 1. GET请求会将参数跟在URL后进行传递,而POST请求则是 ...
- node中的get请求和post请求的不同操作【node学习第五篇】
获取get的请求内容 /** * Created by Administrator on 2016/8/5. */ var http = require("http"); var ...
- iOS开发中的Get请求和POST请求
//Get请求一般为不涉及到用户的账号密码的网络请求,其中Get请求是等请求内容回来之后,才可以进行下一步的操作 - (void)requestWithGet{ //Get请求: //1.设置请求路径 ...
- haproxy 中的http请求和https请求
use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; # /foo ...
- GET 请求和 POST 请求的区别和使用
作为前端开发, HTTP 中的 POST 请求和 GET 请求是经常会用到的东西,有的人可能知道,但对其原理和如何使用并不特别清楚,那么今天来浅谈一下两者的区别与如何使用. GET请求和POST请求的 ...
- Ajax中get请求和post请求
我们在使用Ajax向服务器发送数据时,可以采用Get方式请求服务器,也可以使用Post方式请求服务器,那么什么时候该采用Get方式,什么时候该采用Post方式呢? Get请求和Post请求的区别: 1 ...
- js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)
js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...
- axios中出现两次请求,OPTIONS请求和GET请求
在项目中发现ajax中出现两次请求,OPTIONS请求和GET请求 查看到浏览器NetWork有两次请求,请求url一样: 查找原因是浏览器对简单跨域请求和复杂跨域请求的处理区别. XMLHttpRe ...
- Ajax相关——get请求和post请求的区别
一.完整的URL由以下几部分组成: scheme:通信协议,常用的有:http/ftp. host:主机,服务器(计算机)域名或IP地址 port:端口,整数,可选,省略时使用默认端口,http的默认 ...
随机推荐
- bzoj1319
数论 这个幂指数很难搞,那么我们取个log 去取log得有底数,那么自然这个底数能表示出所有的数 原根满足这个性质 那么我们求出原根,再去log 变成k*ind(x)=ind(a) (mod phi( ...
- 使用jdk获取网页
参考:https://www.zhihu.com/question/30626103 由于例子比较老了,现在的百度抓不到完整的页面了 import java.io.BufferedReader; im ...
- 爬虫中Xpath有时候是无效的
http://www.cnblogs.com/lchzls/p/6282790.html给出了两种方案
- lua中文教程【基本语法】
代码例子:http://www.inf.puc-rio.br/~roberto/book/code.html 注意:没有“:” 1.特点:可扩展.简单.高效.跨平台 2.使用方式:嵌入程序.独立使用. ...
- 如何将excel中的一个表格内容转成xml格式的文件
转自:http://www.cnblogs.com/sansi/archive/2012/02/06/2340471.html 感谢作者,解决了折磨我几天的问题,顿时心情开朗~ ----------- ...
- jQuery 设置图片 src 的2种方法
// 方法1 $('#imgValidateCode').attr("src", data.CodeUrl); // 方法2 var self = $("#refresh ...
- 第四章 “我要点爆”微信小程序云开发之疯狂点击与糖果点爆页面制作
疯狂点击点爆方式页面制作 疯狂点击为用户提供一个60秒的按钮点击时间,同时点击过程中有背景音乐,系统根据用户点击按钮的此时来进行热度值的计算. <view class="the_hea ...
- 关于本科毕业设计期间对数据挖掘工具rapidminer的使用体验和心得,案例分享
1.前言:本科生毕业设计有好多人说没有什么用处,自己又做不出来什么新东西,全是抄抄改改的,浪费大家时间.但是对此事我的态度不同,我觉得就像我们小时候玩过家家一样,别的孩子都在玩,我不参与进去显得会有遗 ...
- CF #541div2 D
题目本质:形成一个拓扑图,不应带自环. 解决方法: 1.先把等于号的部分用dsu缩点: 2.大于和小于号建立拓扑关系: 3.n*m的矩阵,只要用标号n+j代表m集合的第j个就从二维降到一维了: 4.d ...
- POJ3744(概率dp)
思路:一长段概率乘过去最后会趋于平稳,所以因为地雷只有10个,可以疯狂压缩其位置,这样就不需要矩阵乘优化了.另外初始化f[0] = 0, f[1] = 1,相当于从1开始走吧.双倍经验:洛谷1052. ...