SpringMVC ajax传值问题

AJAX前端请求数据处理

SpringMVC后台接受请求数据

SpringMVC对返回给前端数据处理

AJAX前端处理后台返回的数据

注意点:

1.ajax提交的参数说明

Datatype:

预期服务器返回的数据类型。如果不指定,jQuery将自动根据

HTTP包MIME信息来智能判断

"json": 返回 JSON 数据

"text": 返回纯文本字符串

ContentType:

默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。

Async:

默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。

Success:

请求成功后的回调函数。Function(a,b,c)有3个形参,a是返回的数据,b是”success”,c未知。形参的数目可以任意填写,按顺序加载实参

2.使用@ResponseBody注解的同时要导入

jackson-core-asl-1.8.8.jar

Jackson-mapper-asl-1.8.8.jar

该注解的功能才会生效

方式1:

ajax数据为url后缀的格式

注意:

这种方式,

提交方式使用POST时

contentType: "application/json; charset=utf-8",后台无法获取值

contentType:"application/x-www-form-urlencoded",后台可以获取值

当提交方式使用get时

两者都可以获取值

前台:

function ajaxTest1(){

$.ajax({

data:"name=小红&age=12",

type:"POST",

dataType: ‘json‘,

url:"ajax/test1",

success:function(data){

alert("success");

alert(data.name);

alert(data.age);

},

error:function(data){

alert("fail");

}

});

}

后台:

@RequestMapping(value="ajax/test1")

public @ResponseBody Map<String,Object> login1(HttpServletRequest     request,HttpServletResponse response) throws IOException{

System.out.println(request.getParameter("name"));

System.out.println(request.getParameter("age"));

Map<String,Object> map = new HashMap<String,Object>();

map.put("name",request.getParameter("name"));

map.put("age",request.getParameter("age"));

return map;

}

方式2:

Ajax数据为json格式

注意:

这种方式,

提交方式使用POST时

contentType: "application/json; charset=utf-8",后台无法获取值

contentType:"application/x-www-form-urlencoded",后台可以获取值。且中文不乱码

当提交方式使用get时

两者都可以获取值,但是中文乱码

前台:

function ajaxTest2(){

$.ajax({

data:{"name":"小红","age":21},

type:"POST",

dataType: ‘json‘,

url:"ajax/test2",

success:function(data){

alert("success");

alert(data.name);

alert(data.age);

},

error:function(data){

alert("fail");

}

});

}

后台:

@RequestMapping(value="ajax/test2")

public @ResponseBody Map<String,Object> login2(HttpServletRequest     request,HttpServletResponse response) throws IOException{

System.out.println(request.getParameter("name"));

System.out.println(request.getParameter("age"));

Map<String,Object> map = new HashMap<String,Object>();

map.put("name",request.getParameter("name"));

map.put("age",request.getParameter("age"));

return map;

}

方式3:

Ajax数据为json转字符串

注意:

1.前台json数据的key必须和后台bean对应

所以以下清空会报错

var data = {"name":"小红","age":12,"sex":"女"};

var data = {"name":"小红","sex":"女"};

前台的json数据中key可以缺省

所以以下情况正确

var data = {"name":"小红"};

[email protected] 不需要导入额外的jar包

3.contentType必须声明为"application/json;charset=utf-8",不然会报错

前台:

function ajaxTest3(){

var data = {"name":"小红","age":12};

$.ajax({

url: "ajax/test3",

data: JSON.stringify(data),

contentType: "application/json;charset=utf-8",

type: "POST",

success:function(data){

alert("success");

alert(data.name);

alert(data.age);

},

error:function(data,b,c){

alert("fail");

alert(b);

}

});

}

后台:

@RequestMapping(value="ajax/test3")

public @ResponseBody Person  login3(@RequestBody  Person aa ) throws IOException{

System.out.println(aa);

return aa;

}

自定义一个Person类:

public class Person {

private String name;

private int age;

public String getName() { return name;    }

public void setName(String name) { this.name = name;    }

public int getAge() { return age;    }

public void setAge(int age) { this.age = age;    }

}

方式4:

后台使用hashmap接受前段的值

方式5:

后台不使用@Respone自动转换json数据,而使用respone,write方法写入

时间: 2024-10-12 11:00:40

SpringMVC ajax传值问题的相关文章

SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;

情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱码 @RequestMapping(params = "method=submit") public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{ String uname =

web基础知识(一)关于ajax传值最基础东西

HTTP方法之 GET对比POST GET:从指定的资源请求数据, POST:向指定的资源提交要被处理的数据 GET方法: 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的: /test/demo_form.asp?name1=value1&name2=value2 有关 GET 请求的其他一些注释: GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时使用 GET 请求有长度限制 GET 请求只应当用于取回

SpringMVC ajax 参数请求

1.采用@RequestParam或Request对象获取参数的方法 注:contentType必须指定为:application/x-www-form-urlencoded @ResponseBody @RequestMapping(value = "/insert", method = RequestMethod.POST) public HttpResult insert(HttpServletRequest request) { // @RequestParam("L

springMVC中传值的时候的乱码问题

springMVC在传值的时候有时候回出现中文乱码的情况.有一种可能就是service的设置的问题. 打开工程中的tomcat中的servers 打开上述文件,找到下面并加上红色字体 <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/&

jquery ajax传值,get方式后台中文乱码

通过jquery ajax传值,后台出现中文乱码,经过一番摸索后发现原来客户端浏览器通过get方式传递到项目后台时,编码格式是ISO-8859-1,需要我们在后台经过转码才能正常使用.方法如下: str = new String(str.getBytes("ISO-8859-1"), "utf-8"); 需要注意的是,如果在本地测试,后台解析的默认字符编码是gb2312,则不需转码,因此代码修证为: if(!StringUtil.getEncoding(str).e

ajax传值到ashx接收反序列

//jsonData 格式 // [{"PersonID":1,"Name":"Bryon Hetrick","Registered":true}, // {"PersonID":4,"Name":"Nora Osborn","Registered":false}] //ajax传值到ashx var josnData = JSON.stringi

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me

SpringMVC + AJAX 实现多文件异步上传

转自:https://www.jianshu.com/p/f3987f0f471f 今天,我就这个问题来写一篇如何用 SpringMVC + AJAX 实现的多文件异步上传功能.基本的代码还是沿用上篇文章中所用到的项目,需要的朋友可以点击前面的链接查看.在这里只贴出关键代码. 首先我们要准备一个 JS 文件,即:ajaxfileupload.js,它需要用到 jQuery,所以我们还需要准备 jQuery 的库,两个文件在文末尾都有链接提供下载. JSP 关键代码: <li> <div&

springmvc ajax&amp;json处理

1 使用HttpServletResponse来处理--不需要配置解析器 @Controller public class AjaxController { @RequestMapping("/ajax") public void ajax(String name,HttpServletResponse resp) throws IOException{ if ("sgcc".equals(name)) { resp.getWriter().print("